java课堂笔记10
多态
多态的概念:
夫类型的引用可以指向子类型的对象。
Animal a=new Dog();
1.引用:父类型 对象:子类型
2.使用父类型的引用属性和方法,只能调用父类中的属性和方法。
3.运行时,如果子类覆盖了父类中方法,优先调用子类覆盖后的方法。
多态的语法总结
1.多态:A a=new B();
2.用a引用调用方法:a.m1();
b.m1();
3.实际运行时,m1运行A中的,m2运行B中的。
多态的强制转换:
父类给子类要用强转,子类给父类直接用。
1.子类型引用直接赋值类夫类型的引用
Dog d=new Dog();
Animal a=d;
2. 父类型引用必须通过强转赋值给子类型的引用
Animal a=new Dog();
Dog d=(Dog)a;
3.没有继承关系的引用之间不能相互赋值
Animal a=new Dog();
person p=(person)a;
instanceof:
语法:引用名 instanceof 类名
判断引用名中存储的实际对象是否兼容于后面的类型,兼容结果为true.不兼容结果是false.
Animal a=new Dog();
System.out.printin(a instanceof Dog);
System.out.println(a instanceof Cat);
System.out.printin(a instanceof Animal);
instanceof的作用:
先判断引用中的真实类型,再做类型转换,可以避免转换类型异常.
Animal a-new Dog()
if(a instanceof Cat){
Cat c=(Cat)a
}