java学习日记_35:面向对象之从例子中理解继承关系
来源:互联网 发布:数据库模型 编辑:程序博客网 时间:2024/05/17 22:17
/*
看程序写结果:
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();
}
}
——————————————
/*
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();
}
}
看程序写结果:
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();
}
}
1 0
- java学习日记_35:面向对象之从例子中理解继承关系
- java学习日记_36:面向对象之继承中构造方法的关系
- java学习日记_33:面向对象之继承中的成员关系
- java学习日记_34:面向对象之super关键词、this与super的区别和继承中构造方法的关系。08.16~17
- 学习日记之备忘录模式和继承、面向对象设计
- 黑马程序员——学习日记6 java面向对象之继承
- 黑马程序员--Java学习日记之面向对象(封装,this和static,继承)
- 黑马程序员--Java学习日记之面向对象(封装,继承和构造方法)
- java学习日记_31:面向对象之继承的概述、使用、特点和弊端
- java学习日记_32:面向对象之继承的特点和注意事项
- java学习日记_10:面向对象之理解类与对象。
- 黑马程序员java学习日记九 面向对象的理解
- 《java入门第一季》之面向对象面试题(继承中构造方法的关系)
- 黑马程序员---(学习日记一面向对象继承)面向对象中继承及其使用原则
- java学习日记_16:面向对象之匿名对象。07.03
- 从c++中理解java的继承关系
- java学习日记_28:面向对象之工具类中使用静态。08.01
- java学习日记_12:面向对象之如何使用类
- 动态规划与数学方程法解决楼层扔鸡蛋问题
- 堆栈数据代码区
- 【scikit-learn】05:sklearn文本分类及评价指标
- java Object类的wait和notify学习
- SharePoint Server2016 按角色部署服务器及默认服务。
- java学习日记_35:面向对象之从例子中理解继承关系
- JavaScript 操作 Cookie
- Java NIO原理图文分析及代码实现
- php基础之运算符
- Windows操作系统下的MySQL主从复制
- android 自定义相机旋转问题解决及照片自动旋转问题解决
- Select下拉框onchange事件获取option的value值
- Linux系统下ZooKeeper注册中心安装详细步骤(基于单节点)
- Android Studio 导入eclipse工程步骤及一些问题