多态(面向对象的基本特征之一):函数本身具备多态性,每一种事物有不同的具体体现。
体现:父类引用或接口引用指向了子类对象。
好处:提高了程序的扩展性。
多态的弊端:当父类引用指向子类对象时,虽然提高了扩展性,但是只能访问父类中具备的方法,不可以访问子类中特有的方法(前期不能使用后期产生的功能,即访问的局限性。)
多态的前提:
1:必须要有关系,比如继承,或者实现。
2:通常会有覆盖操作
多态的出现思想上也出现了变化,以前是创建对象并指挥对象做事情。有了多态以后,我们可以找到对象的共性类型,直接操作共性类型即可,这样可以指挥一批对象做事情,即通过操作接口或者父类实现。
class 毕姥爷 {
void 讲课 (){
System.out.printLn("企业管理")
}
void 钓鱼() {
System.out.printLn("钓鱼")
}
}
class 毕老师 extends 毕姥爷 {
void 讲课() {
System.out.printLn("JAVA")
}
void 看电影() {
System.out.printLn("看电影")
}
}
class {
public static void main(String[],args){
毕姥爷x = new 毕老师()
毕老师y=(毕老师)x
y.看电影()
}
}
如果想用子类的特有方法,如何判断对象是哪个具体的子类类型呢?
可以通过一个关键字instanceof //判断对象向是否实现了指定的接口或继承了指定的类。
Student instanceof Person = true