java关于继承、多态

多态

(1) 向上转型:用父类引用指向子类对象。
(2)动态绑定:当父类和子类中包含同名参数方法的时候,此时到底调用的是哪个版本的方法,就需要程序运行时来确定(根据当前引用指向的对象的类型才能确定)
(3)方法重写:方法重写这个语法 机制基于动态绑定来实现的,子类和父类中存在同名,同参数列表的方法,(也和返回值、访问权限控制多少有点关系,父类的方法访问权限不应该比子类的更严格)
                       **重写(Override)VS 重载(Overload)**
多态的理解:一个引用可以体现出多种形态(多种不同类型的对象),这是封装的更进一步,类的使用者不需要知道你使用的对象究竟是啥类型
   	**好处**
   	1.多态进一步降低使用者的成本。
   	2.多态可以降低代码的圈复杂度。
   	3.可扩展性更强方便修改。
   	

以下是一道例题。

class X {
    Y y = new Y();

    public X() {
        System.out.print("X");
    }
}

class Y {
    public Y() {
        System.out.print("Y");
    }
}

class Z extends X {
    Y y = new Y();

    public Z() {
        System.out.print("Z");
    }

    public static void main(String[] args) {
        new Z();
    }
}

题解

此题考查对初始化过程的理解。

初始化过程如下:


初始化过程为以下四步
 1. 初始化父类中的静态成员变量和静态代码块 ;
 2. 初始化子类中的静态成员变量和静态代码块 ;
 3.初始化父类的普通成员变量和代码块,再执行父类的构造方法;
 4.初始化子类的普通成员变量和代码块,再执行子类的构造方法

##对于此题,经过分析不难得到:

(1)初始化父类的普通成员变量和代码块,执行  Y y=new Y();  输出Y
(2)再执行父类的构造方法;输出X
(3) 初始化子类的普通成员变量和代码块,执行  Y y=new Y();  输出Y
(4)再执行子类的构造方法;输出Z  所以输出YXYZ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值