博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java继承中的几道面试题
阅读量:6146 次
发布时间:2019-06-21

本文共 3082 字,大约阅读时间需要 10 分钟。

第一题:

1 /* 2     看程序写结果: 3         A:访问成员变量的原则:就近原则。 4         B:this和super的问题: 5             this     访问本类的成员 6             super    访问父类的成员(可以理解为的) 7         C:子类的所有构造方法执行前默认先执行父类的无参构造方法。 8         D:一个类的初始化过程: 9             成员变量进行初始化过程如下:10                 默认初始化11                 显示初始化12                 构造方法初始化13                 14     输出的结果是:15             fu16             zi17             3018             2019             1020 */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); //3036         System.out.println(this.num); //2037         System.out.println(super.num); //1038     }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           静态代码块Fu14           静态代码块Zi15           构造代码块Fu16           构造方法Fu17           构造代码块Zi18           构造方法Zi19 */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         YXYZ16         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地址:
我的博客园地址:
我的蚂蚁笔记博客地址:
Copyright ©2018 黑泽明军
【转载文章务必保留出处和署名,谢谢!】
你可能感兴趣的文章
用户调研(补)
查看>>
ExtJS之开篇:我来了
查看>>
☆1018
查看>>
oracle 去掉空格
查看>>
6.13心得
查看>>
Runtime类
查看>>
eclipse decompiler
查看>>
记一个搜索网盘资源的网站
查看>>
jdk1.7和jdk1.8的String的getByte方法的差异
查看>>
java父子进程通信
查看>>
Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
查看>>
Olap学习笔记
查看>>
Codeforces Round #431 (Div. 1)
查看>>
如何进行数组去重
查看>>
将标题空格替换为 '_' , 并自动复制到剪切板上
查看>>
List Collections sort
查看>>
Mysql -- You can't specify target table 'address' for update in FROM clause
查看>>
使用局部标准差实现图像的局部对比度增强算法。
查看>>
2017-2018-1 20165313 《信息安全系统设计基础》第八周学习总结
查看>>
《代码敲不队》第四次作业:项目需求调研与分析
查看>>