Java基础-多态
概念
顾名思义,多态就是有很多种状态,即某一事物在不同时刻表现出来的不同状态。比如降水,在不同温度下有雨、雪、冰雹等状态,但这都是降水。即同一方法可根据发送对象的不同采用多种方式,这就是多态。
可见不同的状态是有一定联系的,雨、雪、冰雹都可以视为降水的子类,即实现多态的第一个条件:要有继承关系
代码
class Person{ //创建父类
}
class Student extends Person{ //创建子类并继承父类
}
public class Test {
public static void main(String[] args) {
Student s = new Student(); //创建子类对象
Person p = new Student(); //父类的引用指向子类对象
}
}
对于 Person p = new Student();
编译类型Person:声明对象变量的类型
运行类型Student:对象的真实类型
编译类型必须为运行类型或运行类型的父类,当编译类型和运行类型不同的时候就出现了多态,以降水为例,编译类型为降水,但执行的时候是下雪,即实现了多态。
特点
把子类对象赋给父类变量,运行时表现出子类的特征。
实现
实现多态的另一条件
子类重写父类的方法
class Person{
public void f(){ //父类方法
System.out.println("父类");
}
}
class Student extends Person{
@Override
public void f(){ //重写父类方法
System.out.println("子类");
}
}
public class Test {
public static void main(String[] args) {
Student s = new Student();
Person p = new Student();
s.f();
p.f(); //通过父类的对象调用子类的方法
}
}
在一些大的类族中,运用多态可以极大的减少代码重复,提高编码效率
总结:
多态存在的三个必要条件
- 要有继承关系
- 子类重写父类的方法
- 父类的引用指向子类对象(向上转型)
以上为本人学习Java时的一些笔记以及自己的理解
如有不足之处请大家指正