继承与多态

本文详细阐述了面向对象编程中的继承机制,包括派生类的创建、成员访问规则、构造方法的使用、final关键字的作用以及多态的概念,如向上转型、动态绑定和重写。同时讨论了继承和组合的区别以及多态的优缺点。
摘要由CSDN通过智能技术生成

继承

1.继承机制:允许程序员在保持原有类特性的基础上进行扩展,增加新功能,这样产生新的类,称派生类。继承主要解决的问题是:共性的抽取,实现代码复用。
2.语法

修饰符 class 子类 extends 父类 {
// ...
}

3.成员访问

1)子类和父类不存在同名成员变量

2)子类和父类存在同名成员变量:可通过super访问父类的

     super:从父类继承过来的数据的引用,只能在非静态方法中使用

ps:成员变量访问遵循就近原则,自己有优先自己的,如果没有则向父类中找

4.构造方法

子类对象构造时,需要先调用基类构造方法,然后执行子类的构造方法
ps:1. 若父类显式定义无参或者默认的构造方法,在子类构造方法第一行默认有隐含的super()调用,即调用基类构
造方法
2. 如果父类构造方法是带有参数的,此时需要用户为子类显式定义构造方法,并在子类构造方法中选择合适的父类构造方法调用,否则编译失败。
3. 在子类构造方法中,super(...)调用父类构造时,必须是子类构造函数中第一条语句。
4. super(...)只能在子类构造方法中出现一次,并且不能和this同时出现
5. 构造方法中一定会存在super(...)的调用,用户没有写编译器也会增加,但是this(...)用户不写则没有
6.执行顺序:

a、父类静态代码块优先于子类静态代码块执行,且是最早执行
b、父类实例代码块和父类构造方法紧接着执行
c、子类的实例代码块和子类构造方法紧接着再执行
d、第二次实例化子类对象时,父类和子类的静态代码块都将不会再执行

7.final关键字:a、修饰变量或字段,表示常量(即不能修改)

                        b、表示此类不能被继承

                        c、修饰方法:表示该方法不能被重写,称为密封方法

8. 继承(is a)与组合(have a)

多态

去完成某个行为,当不同的对象去完成时会产生出不同的状态。

即同一个引用调用了同一个方法,但因为所引用的对象不一样,所表现的行为不一样,这种思想即为多态。

1. 向上转型:父类引用去调用子类对象,但只能引用父类内部的方法

父类类型 对象名 = new 子类类型()
Animal animal = new Cat("元宝",2);

animal是父类类型,但可以引用一个子类对象,因为是从小范围向大范围的转换。

2. 动态绑定:父类引用去调用子类对象,通过父类引用去调用父子同名的方法,此时调                                        用的是子类的方法

   ps:当在父类的构造方法中调用父子类同名的构造方法时,调用的是子类中的,发生了动态绑定

   静态绑定:通过参数列表不一致等编译时已确定调用的是哪个方法

3.重写(也称为覆盖/复写):方法名相同,参数列表相同(顺序,个数,类型),返回值相同

       ps.1)密封方法即被final修饰的方法,被static修饰的,被private修饰的,构造方法不能被重写

            2)子类重写父类方法时,子类的方法访问修饰限定符>=父类

            3)返回值可以不同,但必须具有父子关系

4.多态的优缺点

 优:a. 能够降低代码的 "圈复杂度", 避免使用大量的 if - else

        b.可扩展能力更强

 缺:a. 属性没有多态性,当父类和子类都有同名属性的时候,通过父类引用,只能引用父类自己的成员属性
        b. 构造方法没有多态性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值