第一题

/*

看程序写结果:

A:成员变量就近原则

B:this和super的问题

this访问本类的成员

super访问父类的成员

C:子类构造方法执行前默认先执行父类的无参构造方法

D:一个类的初始化过程

成员变量进行初始化

默认初始化

显示初始化

构造方法初始化     用参数去调用构造函数就是显式初始化,没有参数就是默认初始化,表现为直接声明对象和数组

所以执行父类无参构造方法前会先执行成员变量的初始化,public int num = 10;,再执行无参构造方法,同理,执行完父类无参构造方法,再执行子类成员变量的初始化,public int num = 20;最后执行子类构造方法。

结果:

fu

zi

30

20

10

*/

class Fu{

public int num = 10;//public int num;这是第一步,不赋值,默认为0,称为默认初始化;第二步,把10赋予给num,这一步称为显式初始化,每个成员变量赋值都会在jvm的堆内存执行                                 //这样的两个步骤。

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();

}

}

题目2

/*

看程序写结果:

A:一个类的静态代码块,构造代码块,构造方法的执行流程

静态代码块 > 构造代码块 > 构造方法

B:静态的内容是随着类的加载而加载

静态代码块的内容会优先执行

C:子类初始化之前先会进行父类的初始化

结果是:

静态代码块Fu

静态代码块Zi

构造代码块Fu

构造方法Fu

构造代码块Zi

构造方法Zi

*/

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();

}

}

问题三

/*

看程序写结果:

A:成员变量的问题

int x = 10; //成员变量是基本类型

Student s = new Student(); //成员变量是引用类型

B:一个类的初始化过程

成员变量的初始化

默认初始化

显示初始化

构造方法初始化

C:子父类的初始化(分层初始化)

先进行父类初始化,然后进行子类初始化。

结果:

YXYZ

问题:

虽然子类中构造方法默认有一个super()

初始化的时候,不是按照那个顺序进行的。

而是按照分层初始化进行的。

它仅仅表示要先初始化父类数据,再初始化子类数据。

*/

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();

}

}

java 继承练习题_Java继承 练习题相关推荐

  1. java继承总结_java继承总结(二)

    java学习笔记 1.继承 关键字: extends 在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以extends只能继承一个类. eg: public class P ...

  2. java 继承 冒号_java继承(extends)简单介绍

    继承相信很多人都有听说过,继承是面向对象的三个基本特征之一,下面的话就一起通过简单的文章来对java继承进行一下了解吧. 继承和现实生活中的"继承"的相似之处是保留一些父辈的特性, ...

  3. java 继承关键字_Java继承

    继承的概念 继承是Java面向对象编程的基石,因为它允许创建分等级层次的类. 生活中的继承: 类的继承格式 class 父类{ } class 子类 extends 父类{ } 继承类型 需要注意的是 ...

  4. java的继承实例_Java继承和多态实例

    我们知道面向对象的三大特性是封装.继承和多态.然而我们有时候总是搞不清楚这些概念.下面对这些概念进行整理, 为以后面向抽象的编程打下坚实的基础. 封装的概念还是很容易理解的.如果你会定义类,那么相信你 ...

  5. java的继承实例_java继承(实例讲解一)

    Java继承(Java inheritance) Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类.这种技术使 ...

  6. java基础练习_Java基础练习题

    练习题 在Java的编程环境下,创建Java项目,项目名称为Test+学号,然后完成下列编程题,为每一道编程题创建一个包,包名为test+题号,例如第一题的包为test1,然后在该包下完成题 目要求. ...

  7. java狐狸游戏_Java继承

    一种类与类之间的关系 使用已存在的类的定义作为基础建立新类 新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类 子类只能继承一个父类 package com.imooc. ...

  8. java子类继承错误_java继承会犯的小错误

    注意事项:阅读本文前应该先了解java的继承.本文定位为已经继承基础知识. 一:试图覆盖私有方法 先上代码 1 public classFather {2 3 private voidprint() ...

  9. java 类继承实例_java继承例子代码,java类的继承示例

    下面要给大家带来的是一个java类的继承的例子,一起来看看详细的代码吧! 一.题目 1.定义一个Person类,这个类的属性有三个,分别是name.age.color. 类有构造方法给三个属性赋值. ...

最新文章

  1. 译Step-by-Step Guide on Configuring Django-Userena
  2. 大牛书单 | 腾讯运维大咖陪你过724
  3. 【python】python redis的安装与使用
  4. H5页面在iOS网页数字颜色自动被改变成蓝色
  5. django ajax 简书,Django_ajax
  6. 微软1月补丁星期二值得关注的蠕虫及其它
  7. angularjs应用总结
  8. R for data science之purrr包(下)
  9. 测试打印机性能的软件,打印机检测软件Printer Check
  10. Java使用itext 生成PDF,以生成个人简历为例
  11. 静态网页—制作“人人网首页”页面
  12. XPDL学习与分享 一
  13. 在线教育火拼硬件,是炒概念还是真转型?
  14. 求大家别秀智商了:请给我一面国旗 @微信官方
  15. 001-eNSP 先学画个漂亮的拓扑图
  16. iPhone备忘录清除缓存
  17. UIFont-动态字体
  18. yolov8 瑞芯微RKNN和地平线Horizon芯片仿真测试部署
  19. Kubernetes Pod冗余策略
  20. 尚硅谷大数据视频_Shell视频教程

热门文章

  1. 计算碳原子系综的能级C
  2. java ios websocket_Java WebSocket的例子
  3. python程序多线程_Python-多线程编程
  4. python的unicode_python的unicode及其编码解码
  5. 第一个python解释器_第一个python程序
  6. 仪表指针样式_PS教程!教你绘制拟物仪表盘拟物图标
  7. 【Python】垃圾分类,调用阿里云API
  8. Vim的使用技巧-自动闭合成对符号
  9. 按键抖动仿真Testbench(repeat、task、random)的用法
  10. C++类的定义和声明