什么是多态?
同一个对象,在不同时刻表现出来的不同形态。
多态的前提?
- 要有继承或实现关系
- 要有方法的重写
- 要有父类引用指向子类对象
多态中成员访问特点
- 成员变量编译看左边,运行看左边。
- 成员方法编译看左边,运行看右边。
代码演示
父类Student
public class Student {
//成员变量
public String money = "50000";
//成员方法
public void eat() {
System.out.println("吃东西");
}
}
子类HeimaStudent
public class HeimaStudent extends Student{
//成员变量
public String money = "1000";
//子类特有成员变量
public String address = "时代山";
//成员方法
@Override
public void eat() {
System.out.println("吃大餐");
}
//子类特有成员方法
public void play() {
System.out.println("玩游戏");
}
}
测试类Test
public class Test6 {
public static void main(String[] args) {
Student student = new HeimaStudent(); //父类引用指向子类对象
// 多态成员变量的访问特点: 编译看左边,运行看左边
// System.out.println(student.address); 编译看左边,Student类没有address属性,但可以向下转型
// System.out.println(((HeimaStudent) student).address); 向下转型
System.out.println(student.money); //运行看左边 ,Student类的money变量为50000
System.out.println("---------------------------");
// 多态中成员方法的访问特点:编译看左边,运行看右边
// student.play(); Student类中没有play方法,但可以向下转型
// ((HeimaStudent) student).play(); 向下转型
student.eat(); //运行看右边,HeimaStudent类的eat方法是吃大餐
}
}
运行结果