代码中体现多态性:父类引用指向子类对象。
格式: 父类名称 对象名 = new 子类对象();
或者: 接口名称 对象名 = new 实现类名称();
代码示例:
public class Dad {
public void method(){
System.out.println("这是父类方法");
}
public void methodd(){
System.out.println("父类特有方法");
}
}
public class Son extends Dad{
@Override
public void method() {
System.out.println("这是子类方法");
}
}
public class DemoMulti {
public static void main(String[] args) {
/*
使用多态的写法
左侧父类的引用,指向了右侧子类的对象
*/
Dad obj = new Son();
obj.method();
obj.methodd();
}
}
在多态中,成员方法的访问规则是:
看 new 的谁,就优先用谁,没有则向上找。
编译看左边,运行看右边
在多态中,成员方法与成员变量对比:
成员变量:编译看左边,运行看左边。
成员方法:编译看左边,运行看右边。
如何才能知道一个父类引用的对象原本是什么子类?
格式: 对象名 instanceof 类名称
将会返回一个boolean值,也就是判断前面的对象能不能当做后面类型的实例。