java 继承练习题_Java继承 练习题
第一题
/*
看程序写结果:
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继承 练习题相关推荐
- java继承总结_java继承总结(二)
java学习笔记 1.继承 关键字: extends 在 Java 中,类的继承是单一继承,也就是说,一个子类只能拥有一个父类,所以extends只能继承一个类. eg: public class P ...
- java 继承 冒号_java继承(extends)简单介绍
继承相信很多人都有听说过,继承是面向对象的三个基本特征之一,下面的话就一起通过简单的文章来对java继承进行一下了解吧. 继承和现实生活中的"继承"的相似之处是保留一些父辈的特性, ...
- java 继承关键字_Java继承
继承的概念 继承是Java面向对象编程的基石,因为它允许创建分等级层次的类. 生活中的继承: 类的继承格式 class 父类{ } class 子类 extends 父类{ } 继承类型 需要注意的是 ...
- java的继承实例_Java继承和多态实例
我们知道面向对象的三大特性是封装.继承和多态.然而我们有时候总是搞不清楚这些概念.下面对这些概念进行整理, 为以后面向抽象的编程打下坚实的基础. 封装的概念还是很容易理解的.如果你会定义类,那么相信你 ...
- java的继承实例_java继承(实例讲解一)
Java继承(Java inheritance) Java继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类.这种技术使 ...
- java基础练习_Java基础练习题
练习题 在Java的编程环境下,创建Java项目,项目名称为Test+学号,然后完成下列编程题,为每一道编程题创建一个包,包名为test+题号,例如第一题的包为test1,然后在该包下完成题 目要求. ...
- java狐狸游戏_Java继承
一种类与类之间的关系 使用已存在的类的定义作为基础建立新类 新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类 子类只能继承一个父类 package com.imooc. ...
- java子类继承错误_java继承会犯的小错误
注意事项:阅读本文前应该先了解java的继承.本文定位为已经继承基础知识. 一:试图覆盖私有方法 先上代码 1 public classFather {2 3 private voidprint() ...
- java 类继承实例_java继承例子代码,java类的继承示例
下面要给大家带来的是一个java类的继承的例子,一起来看看详细的代码吧! 一.题目 1.定义一个Person类,这个类的属性有三个,分别是name.age.color. 类有构造方法给三个属性赋值. ...
最新文章
- 译Step-by-Step Guide on Configuring Django-Userena
- 大牛书单 | 腾讯运维大咖陪你过724
- 【python】python redis的安装与使用
- H5页面在iOS网页数字颜色自动被改变成蓝色
- django ajax 简书,Django_ajax
- 微软1月补丁星期二值得关注的蠕虫及其它
- angularjs应用总结
- R for data science之purrr包(下)
- 测试打印机性能的软件,打印机检测软件Printer Check
- Java使用itext 生成PDF,以生成个人简历为例
- 静态网页—制作“人人网首页”页面
- XPDL学习与分享 一
- 在线教育火拼硬件,是炒概念还是真转型?
- 求大家别秀智商了:请给我一面国旗 @微信官方
- 001-eNSP 先学画个漂亮的拓扑图
- iPhone备忘录清除缓存
- UIFont-动态字体
- yolov8 瑞芯微RKNN和地平线Horizon芯片仿真测试部署
- Kubernetes Pod冗余策略
- 尚硅谷大数据视频_Shell视频教程