Java继承中的几道面试题

简介: 第一题: 1 /* 2 看程序写结果: 3 A:访问成员变量的原则:就近原则。 4 B:this和super的问题: 5 this 访问本类的成员 6 super 访问父类的成员(可以理解为的) 7 C:子类的所有构造方法执行前默认先执行父类的无参构造方法。

第一题:

 1 /*
 2     看程序写结果:
 3         A:访问成员变量的原则:就近原则。
 4         B:this和super的问题:
 5             this     访问本类的成员
 6             super    访问父类的成员(可以理解为的)
 7         C:子类的所有构造方法执行前默认先执行父类的无参构造方法。
 8         D:一个类的初始化过程:
 9             成员变量进行初始化过程如下:
10                 默认初始化
11                 显示初始化
12                 构造方法初始化
13                 
14     输出的结果是:
15             fu
16             zi
17             30
18             20
19             10
20 */
21 class Fu {
22     public int num = 10;
23     public Fu() {
24         System.out.println("fu");
25     }
26 }
27 
28 class Zi extends Fu {
29     public int num = 20;
30     public Zi() {
31         System.out.println("zi");
32     }
33     public void show() {
34         int num = 30;
35         System.out.println(num); //30
36         System.out.println(this.num); //20
37         System.out.println(super.num); //10
38     }
39 }
40 class ExtendsTest {
41     public static void main(String[] args) {
42         Zi z = new Zi();
43         z.show();
44     }
45 }

第二题:

 1 /*
 2     看程序写结果:
 3         A:一个类的静态代码块,构造代码块,构造方法的执行流程:
 4             静态代码块 > 构造代码块 > 构造方法
 5         B:静态的内容是随着类的加载而加载,
 6             即:静态代码块的内容会优先执行。
 7         C:构造代码块
 8              在类中方法外出现(即在类中的成员位置),可以把多个构造方法方法中相同的代码存放到一起,用于对对象进行初始化,
 9             每次调用构造方法都执行,并且在构造方法前执行。
10         C:子类的所有的构造方法默认都会去访问父类的无参构造方法。
11         
12     输出结果是:
13           静态代码块Fu
14           静态代码块Zi
15           构造代码块Fu
16           构造方法Fu
17           构造代码块Zi
18           构造方法Zi
19 */
20 class Fu {
21     static {
22         System.out.println("静态代码块Fu");
23     }
24 
25     {
26         System.out.println("构造代码块Fu");
27     }
28 
29     public Fu() {
30         System.out.println("构造方法Fu");
31     }
32 }
33 
34 class Zi extends Fu {
35     static {
36         System.out.println("静态代码块Zi");
37     }
38 
39     {
40         System.out.println("构造代码块Zi");
41     }
42 
43     public Zi() {
44         System.out.println("构造方法Zi");
45     }
46 }
47 
48 class ExtendsTest2 {
49     public static void main(String[] args) {
50         Zi z = new Zi();
51     }
52 }

第三题:

 1 /*
 2     看程序写结果:
 3         A:成员变量的问题
 4             int x = 10; //成员变量x是基本类型
 5             Student s = new Student(); //成员变量s是引用类型
 6         B:一个类的初始化过程
 7             先进行成员变量的初始化:
 8                 默认初始化
 9                 显示初始化
10                 构造方法初始化
11         C:子父类的初始化(分层初始化)
12             先进行父类初始化,然后进行子类初始化。
13             
14     结果:
15         YXYZ
16         
17     问题:
18         虽然子类中的构造方法默认有一个 super();
19         但初始化的时候,不是按照那个顺序进行的。
20         而是按照分层初始化进行的。
21         super(); 它仅仅表示要先初始化父类数据,再初始化子类数据。
22 */
23 
24 class X {
25     //成员变量(引用类型)
26     Y b = new Y();
27     //无参构造方法
28     X() {
29         System.out.print("X");
30     }
31 }
32 
33 class Y {
34     //无参构造方法
35     Y() {
36         System.out.print("Y");
37     }
38 }
39 
40 public class Z extends X {
41     //成员变量(引用类型)
42     Y y = new Y();
43     //无参构造方法
44     Z() {
45         //super(); //它仅仅表示要先初始化父类数据,再初始化子类数据。
46         System.out.print("Z");
47     }
48     public static void main(String[] args) {
49         new Z(); 
50     }
51 }

 

我的GitHub地址: https://github.com/heizemingjun
我的博客园地址: http://www.cnblogs.com/chenmingjun
我的蚂蚁笔记博客地址: http://blog.leanote.com/chenmingjun
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
相关文章
|
1天前
|
移动开发 前端开发 JavaScript
Java和web前端,IT新人该如何选择?,2024年最新Web前端内存优化面试
Java和web前端,IT新人该如何选择?,2024年最新Web前端内存优化面试
|
1天前
|
Java 数据库连接 数据库
spring--为web(1),富士康java面试题整理
spring--为web(1),富士康java面试题整理
|
1天前
|
安全 Java 数据库
Spring boot 入门教程-Oauth2,java面试基础题核心
Spring boot 入门教程-Oauth2,java面试基础题核心
|
1天前
|
Java
Java中int[]与Integer[]相互转化的方法,java基础知识面试重点总结
Java中int[]与Integer[]相互转化的方法,java基础知识面试重点总结
|
1天前
|
算法 Java C++
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
刷题两个月,从入门到字节跳动offer丨GitHub标星16k+,美团Java面试题
|
2天前
|
设计模式 算法 Java
Java的前景如何,好不好自学?,万字Java技术类校招面试题汇总
Java的前景如何,好不好自学?,万字Java技术类校招面试题汇总
|
2天前
|
存储 网络协议 前端开发
es集群安装,邮储银行java面试
es集群安装,邮储银行java面试
|
2天前
|
消息中间件 JSON Java
十五,java高级程序员面试宝典
十五,java高级程序员面试宝典
|
2天前
|
NoSQL 算法 Java
【redis源码学习】持久化机制,java程序员面试算法宝典pdf
【redis源码学习】持久化机制,java程序员面试算法宝典pdf
|
2天前
|
消息中间件 Java Kafka
Java大文件排序(有手就能学会),kafka面试题2024
Java大文件排序(有手就能学会),kafka面试题2024