多态概述
同一个对象,在不同时刻表现出来的不同形态
举例:猫
我们可以说猫是猫:猫cat=new 猫();
我们也可以说猫是动物: 动物animal=new 猫();
这里猫在不同的时刻表现出来了不同的形态,这就是多态
多态的前提和体现
- 有继承/实现关系
- 有方法重写
- 有父类引用指向子类对象
多态中成员访问特点
(左右指的是Animal dog=new dog() )
- 成员变量:编译看左边,执行看右边
- 成员方法:编译看左边,执行看右边
为什么成员变量和成员方法的访问不一样呢?
因为成员方法有重写,而成员变量没有
多态的好处和弊端
多态的好处:提高了程序的扩展性
具体体现:定义方法的时候,使用父类型作为参数,将来在使用的时候,使用具体的子类型参与操作
多态的弊端:不能使用子类的特有功能
多态中的转型
- 向上转型
从子到父
Animal a=new Cat();
父类引用指向子类对象
- 向下转型
从父到子
Cat c=(Cat)a;
强转
父类引用转为子类对象
抽象类
概述
一个没有方法体的方法应该定义为抽象方法,而类中如果有抽象方法,就必须定义为抽象类
抽象类不是具体的就不能创建对象
抽象类的特点:
- 抽象类和抽象方法必须使用abstract关键字修饰
public abstract class 类名{}
public abstract void eat();
- 抽象类中不一定有抽象方法,有抽象方法的类一定是抽象类
- 抽象类不能实例化
- 实现实例化应该参照多态的方式,通过子类对象实例化,这叫抽象类多态
抽象类的子类
要么重写抽象类中的所有抽象方法
要么是抽象类
抽象类的成员特点:
- 成员变量
可以是变量
可以是常量
- 构造方法
有构造方法,但是不能实例化
那么,构造方法的作用是什么呢?
用于子类访问父类数据的初始化
- 成员方法
可以有抽象方法:限定子类必须完成某些动作
也可以有非抽象方法:提高代码复用性
本文详细介绍了Java中的多态性概念,包括其前提条件、成员访问特点以及多态带来的好处与弊端。多态允许将父类引用指向子类对象,增强了程序的扩展性,但也限制了对子类特有功能的直接访问。此外,文章还讨论了向上和向下转型,以及抽象类的相关知识,强调抽象类不能实例化,但可以作为子类的模板,提高代码复用性。
1117

被折叠的 条评论
为什么被折叠?



