多态
- 即同一个方法可以根据发送对象的不同而采用多种不同的行为方式;
- 一个对象的实际类型是确定的,但可以指向对象的引用的类型有很多(父类,有关系的类)。
多态存在的条件:
- 有继承关系;
- 子类重写父类方法;
- 父类引用指向子类对象;
注意:多态是方法的多态,属性没有多态性。
编译看左,运行看右
Father.java
public class Father {
public void run(){
System.out.println("Father跑起来");
}
}
Son.java
public class Son extends Father {
@Override
public void run() {
System.out.println("Son跑起来");
}
public void eat(){
System.out.println("eating");
}
}
Test.java
public class Test{
public static void main(String[] args) {
Son s1 = new Son();
Father s2 = new Son();
//如果Son类没有重写则两个都输出<<Father跑起来
s1.run();
s2.run();
s1.eat();
((Son)s2).eat();//如果是 s2.eat() 会报错,所以得向下转型
}
}
Output
Son跑起来
Son跑起来
eating
eating