Java中的多态
一、 多态性的概述
面向对象的三大特征:封装性、继承性、多态性。
extends继承或者implements实现,无论是类与类之间的继承、类与接口之间的实现还是接口与接口间的继承,反正总会出现上下的层次关系,这种关系的产生就是多态性出现的前提。
二、怎么体现多态性
多态性的体现,其实就是一句话,父类引用指向子类对象
格式:父类名称 对象名 = new 子类名称();
在这里插入代码片
父类名称 对象名 = new 子类名称();
**代码中体现多态性:
**
- 先新建一个People类
在这里插入代码片
public class People{
public void fun(){
System.out.println("我是父类方法");
}
}
- 再来个Student类,并继承People类
public class Student extends People{
public void fun(){
System.out.println("我是子类方法");
}
}
- 在main中用父类名称 对象名 = new 子类名称();格式新建一个对象
在这里插入代码片
public class Test {
public static void main(String[] args) {
People people = new Student();
people .fun(); //我是子类方法
}
}
- 上面代码中,用子类来构造父类的对象,然后调用重名方法fun(),调用的是子类的fun()方法,这就说明了当父类和子类有重名方法时,看等号“=” 右边的是什么类,调用的就是什么类的方法,看new的是谁就优先用谁。
- 子类和父类中都有fun()函数,这叫方法重写,方法重写方法名必须相同,参数类型和返回类型也要相同,这样就构成了方法重写
- 用子类来构造父类是可以的,因为“子类就是一个父类”好比“学生就是一个人”,我们可以把学生当人看,但是人不一定就是学生,People people = new Student();(正确写法)
Student people = new People(); (错误写法)
多态的好处
1、减轻了代码的维护性,提高了代码的扩展性