多态实例
package fortest;
class BaseClass {
public int book = 6;
public void base() {
System.out.println("父类的普通方法");
}
public void test() {
System.out.println("父类的test方法");
}
}
public class SubClass extends BaseClass {
public String book = "实战Java";
public void test() {
System.out.println("子类覆写父类的test方法");
}
public void sub() {
System.out.println("子类的普通方法");
}
public static void main(String[] args) {
BaseClass bc = new BaseClass();
System.out.println(bc.book);
bc.base();
bc.test();
SubClass sc = new SubClass();
System.out.println(sc.book);
sc.test();
sc.sub();
/**
* ***************多态************** 下面pb,编译时类型是BaseClass,而运行时类型是SubClass,
* 当调用该引用变量的test方法实际上 执行的是SunClass类中覆写后的test方法,这就是多态
*/
BaseClass pb = new SubClass();// 将子类对象赋给父类引用变量
System.out.println(pb.book);// 对象的属性不具备多态
pb.base();
pb.test();
// pb.sub();
}
}
结果:
6
父类的普通方法
父类的test方法
实战Java
子类覆写父类的test方法
子类的普通方法
6
父类的普通方法
子类覆写父类的test方法
浙公网安备 33010602011771号