首页 > 技术文章 > java多态

do-it-520 2020-09-11 16:54 原文

多态中的成员访问特点:

A:成员变量
编译看左边,运行看左边。
B:构造方法
创建子类对象的时候,访问父类的构造方法,对父类的数据进行初始化。
C:成员方法
编译看左边,运行看右边。
D:静态方法
编译看左边,运行看左边。
(静态和类相关,算不上重写,所以,访问还是左边的)
由于成员方法存在方法重写,所以它运行看右边。

多态的好处和弊端

多态的好处:提高了程序的扩展性
多态的弊端:不能使用子类的特有功能
具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作

多态中的转型

向上转型
      从子到父
      父类引用指向子类对象
向下转型
      从父到子
      父类引用转为子类对象
up://不能访问子类的特有方法
animal a = new cat();

down://利用强制转换
animal a = new cat();
cat c = (cat)a;

多态转型分析

new出来的方法都在堆内存中储存,然后栈内存的类的对象指向对应堆内存中的地址,可以将父类的对象指向任意new出来的子类的地址,但是,将父类的对象向下转型之后,只能将该对象指向和该类相同对象类的对象。例如:

抽象类的特点

1.抽象类和抽象方法必须使用abstract关键字修饰
public abstract class类名l
public abstract void eat(;
2.抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
3.抽象类不能实例化
抽象类如何实例化呢?参照多态的方式,通过子类对象实例化,这叫抽象类多态
4.抽象类的子类
要么重写抽象类中的所有抽象方法
要么是抽象类

抽象类的成员特点

1.成员变量
可以是变量,也可以是常量
2.构造方法
有构造方法,但是不能实例化
那么,构造方法的作用是什么呢?用于子类访问父类数据的初始化
3.成员方法
可以有抽象方法:限定子类必须完成某些动作
也可以有非抽象方法:提高代码复用性

推荐阅读