java学习日记_35:面向对象之从例子中理解继承关系
2016-09-23 14:48
555 查看
/*
看程序写结果:
A:成员变量
就近原则
B:this和super的问题
this访问本类的成员
super访问父类的成员
C:子类构造方法执行前默认先执行父类的无参构造方法
D:一个类的初始化过程
成员变量进行初始化
默认初始化
显示初始化
构造方法初始化
结果:fu
zi
30
20
10
*/
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();
}
}
——————————————————
/*
看程序写结果:
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学习日记_34:面向对象之super关键词、this与super的区别和继承中构造方法的关系。08.16~17
- java学习日记_36:面向对象之继承中构造方法的关系
- java学习日记_33:面向对象之继承中的成员关系
- java学习日记_31:面向对象之继承的概述、使用、特点和弊端
- java学习日记_10:面向对象之理解类与对象。
- java java面向对象-理解继承关系
- Java学习第8天(2):面向对象-继承-子父类关系
- Java面向对象学习笔记 -- 3(继承、向上造型、重写)
- java学习之旅39--面向对象_12_继承_方法的重写
- 黑马程序员--【学习日记四】——java面向对象(二)
- 黑马程序员--面向对象第二部分-内部类、异常--java学习日记6(基础知识)
- Java学习笔记----面向对象理解
- 黑马程序员——学习日记7 java面向对象之封装
- java语言面向对象笔记,在学习面向对象时应该理解掌握的原理-作者:逝秋
- JAVA基础学习(七)---面向对象三---继承,接口与 抽象类
- Java学习第六_八天:面向对象__继承_接口_多态
- 设计模式学习(一):java 面向对象特征:抽象、封装、多态、继承
- Java学习日记:面向对象基础
- Java面向对象学习笔记-继承
- 黑马程序员————学习日记【5】 【Java面向对象1】