- 多态
多态是在继承、实现情况下的一种现象,表现为:对象多态、行为多态
多态前提:有继承/实现关系;存在父类引用子类对象;存在方法重写
多态的好处:
- 解耦:在多态形式下,右边的代码是解耦合的,更便于扩展和维护。
- 拓展性强:定义方法时,使用父类类型作为形参,可以接收一切子类对象,扩展性更强,更便利。
Teacher类增加 teach方法;Student类增加 study方法
```学生类
public class Student extends People {
@Override
public void run() {
System.out.println("学生跑得飞快----");
}
public void study(){
System.out.println("学生在学习");
}
}
public class Teacher extends People {
@Override
public void run() {
System.out.println("老师跑得慢----");
}
public void teach(){
System.out.println("老师会教学");
}
}
public class Test02 {
public static void main(String[] args) {
//老师跑步
Teacher t = new Teacher();
go(t);
//学生跑步
Student s = new Student();
go(s);
}
/**
* 人跑步方法
* @param p
*/
public static void go(People p){
System.out.println("预备---开始---跑");
p.run();
p.teach();//会报错
p.study();//会报错
System.out.println("到终点了----结束");
}
}
在多态形式下,不能调用子类特有的方法
解决方案:类型转换
```instanceof可以避免类型转换异常 使用:在强转前先通过instanceof关键字判断当前对象是否属于某个类型
p.run();
if(p instanceof Teacher) {
Teacher t = (Teacher) p;
t.teach();
} else if(p instanceof Student){
Student s = (Student) p;
s.study();
}
标签:day03,void,多态,public,Student,println,Teacher
From: https://www.cnblogs.com/hmxjc/p/17995531