多态
Pet p = new Dog(); 前边是父类类型 后面是子类类型; 都是p.mm();1、如果父类有 子类有 那么调用 子类的2、如果父类有 子类没有 那么调用 父类的3、如果父类没有 子类有 那么 报错!!!!一 。 多态 父类类型 父类引用 = new 子类类型(); 多态 三要素: 1 、 要有继承关系 extends 2 、 要有方法重写 第一种情况子类没有重写父类同名方法时,子类对象调用的是父类的方法 第二种情况 父类没有此方法,无法使用父类对象去调用(编译不能通过) 编译时: 看写的对象是什么类型 就访问什么类型 运行时: 会根据传进来的真实类型来调用相应方法 JVM动态绑定机制:根据运行时的真实类型去调用相应的方法 3 、 要有父类引用指向子类对象二 、 抽象方法 1 、 抽象方法没有具体实现 访问修饰符 abstract 返回类型 方法名()2 、 抽象方法所在的类必须是抽象类
访问修饰符 abstract class() 类名 3 、 子类必须实现抽象服了的抽象方法 除非子类也是抽象的 4 、 抽象类中可以有抽象方法 也可以没有 5 、 抽象类不可以被实例化三 向下转型和向下转型向下转型: (子类类型)子类引用 = (子类类型)父类引用 向下转型后才能调用子类特有的方法 当要转换类型与父类引用指向的子类类型不一致时候 报错。。。。。。。解决办法
使用 instanceof 关键字判断类型 四 、父类类型作为方法的返回值 访问修饰符 父类类型 方法命(参数){ return 具体子类对象;} 测试类 : 1. 询问: 要打印什么呀? (电视类还是视频) 2. 根据询问的结果 返回一个具体的子类对象 3.