java面试题1--继承--看程序写结果
来源:互联网 发布:sqlserver添加数据 编辑:程序博客网 时间:2024/04/27 17:47
面试题1:看程序写结果:
本题考查的内容:
A:成员变量 就近原则
B:this和super的问题
this访问本类的成员
super访问父类的成员
C:子类构造方法执行前默认先执行父类的无参构造方法
D:一个类的初始化过程
成员变量初始化
默认初始化
显式初始化
构造方法初始化
class Fu{ public int num = 10; public Fu(){ System.out.println("fu"); } } class Zi extends Fu{ public int num = 20; public Zi(){ System.out.println("zi"); } public void show(){ int num = 30; System.out.println(num); //30 System.out.println(this.num); //20 System.out.println(super.num); //10 } } class ExtendsTest { public static void main(String[] args) { Zi z = new Zi(); z.show(); } }
结果: fu zi 30 20 10
题2:看程序写结果:
A:一个类的静态代码块,构造代码块,构造方法的执行流程
静态代码块 > 构造代码块 > 构造方法
B:静态的内容是随着类的加载而加载
静态代码块的内容会优先执行
C:子类初始化之前先会进行父类的初始化
class Fu { static { System.out.println("静态代码块Fu"); } { System.out.println("构造代码块Fu"); } public Fu() { System.out.println("构造方法Fu"); }}class Zi extends Fu { static { System.out.println("静态代码块Zi"); } { System.out.println("构造代码块Zi"); } public Zi() { System.out.println("构造方法Zi"); }}class ExtendsTest2 { public static void main(String[] args) { Zi z = new Zi(); }}
结果是: 静态代码块Fu 静态代码块Zi 构造代码块Fu 构造方法Fu 构造代码块Zi 构造方法Zi
面试题3:
看程序写结果:
A:成员变量的问题
int x = 10; //成员变量是基本类型
Student s = new Student(); //成员变量是引用类型
B:一个类的初始化过程
**成员变量的初始化
默认初始化
显示初始化
构造方法初始化**
C:子父类的初始化(分层初始化)
先进行父类初始化,然后进行子类初始化。
class X { Y b = new Y(); X() { System.out.print("X"); }}class Y { Y() { System.out.print("Y"); }}public class Z extends X { Y y = new Y(); Z() { //super(); System.out.print("Z"); } public static void main(String[] args) { new Z(); }}
解释:这里的super()仅仅是用来占位的,实际上,必须是严格按照分层初始化的过程:
1.先初始化父类X的成员变量,即初始化成员变量Y,打印出:Y
2.初始化父类X的构造方法,打印出:X
3.父类初始化完成之后,初始化子类Z,先初始化子类的成员变量y,打印出:Y
4.接着初始化子类Z的构造方法,打印出:Z
可以看出,super()在这里不影响初始化的顺序
结果:
YXYZ
问题:
虽然子类中构造方法默认有一个super()
初始化的时候,不是按照那个顺序进行的。
而是按照分层初始化进行的。
它仅仅表示要先初始化父类数据,再初始化子类数据,不受其他条件的制约。
- java面试题1--继承--看程序写结果
- 面试题10:看程序写结果(继承)
- 常见对象_String面试题看程序写结果
- java(看程序写结果)
- 看程序写结果
- 看程序写结果
- 看程序,写结果
- 看程序写结果
- 从面试题看继承
- 看程序写结果(program)
- String 看程序写结果
- JAVA面试题(继承)
- java_se_recall 看程序写结果测试题 (包含继承 重写 多态知识)
- Java面试题:多继承
- 面试题:下面程序的运行结果
- 继承,静态代码程序面试题总结
- java面试题:有关于继承的面试题
- java程序员必看的面试题
- Linux 系统 /usr 介绍
- Hadoop-HDFS(一)读流程
- CODEVS1000 A+B
- Scala基础(1):开发环境搭建
- Node.js安装及常用命令(Mac OS )
- java面试题1--继承--看程序写结果
- Linux系统编程--进程控制(一)
- Codeforces670E. Correct Bracket Sequence Editor
- 装逼编辑器Atom+activiate-power-mode效果配置
- 《30天自制操作系统》 day5 小结
- JAVA——类
- 可重入函数与线程安全
- Codeforces 66 D Petya and His Friends(找规律)
- 在线赛模板