首页 文章 精选 留言 我的

精选列表

搜索[java],共10000篇文章
优秀的个人博客,低调大师

Java继承中的几道面试题

第一题: 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 黑泽明军 【转载文章务必保留出处和署名,谢谢!】

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册