黑马程序员——Java多态

来源:互联网 发布:添加字段sql 编辑:程序博客网 时间:2024/06/03 23:06

多态:指同一个实体同时具有多种形式,编译时的类型由声明该变量时使用的类型决定,运行时的类型由实际赋给变量的对象决定,当编译时类型和运行时类型不同时,就出现多态。

体现:父类引用或者接口的引用指向了自己的子类对象。//Person p = new Student();

多态的优点:提高了程序的扩展性。

多态的缺点:当父类引用指向子类对象时,虽然提高了扩展性,但是只能访问父类中具备的方法,不可以访问子类中特有的方法。

多态的前提:

1必须要有关系,如继承、实现

2通常有覆盖操作。

实现多态的机制:

父类的引用变量可以指向子类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的真正实例对象的方法,也就是内存里正在运行的那个对象的方法,

而不是引用变量的。


类型中定义的方法。 

多态中成员变量的特点:静态成员函数和所有变量,无论编译还是运行时,全部参照父类;非静态的函数,编译参照父类,运行参照子类。

class Dog{void eat(){System.out.println("一般的狗吃一般的狗粮!");}}class HashDog extends Dog{void eat(){System.out.println("哈士奇吃哈士奇的狗粮!");}}class ZangAoDog extends Dog{void eat(){System.out.println("藏獒吃藏獒的狗粮!");}}//定义一个动物园喂的方法class Zoo{void feed(Dog d){d.eat();}}public class Demo {public static void main(String[] args) {Dog hd = new HashDog();Dog zd = new ZangAoDog();Zoo z = new Zoo();z.feed(hd);z.feed(zd);}}

输出:

哈士奇吃哈士奇的狗粮!

藏獒吃藏獒的狗粮!


0 0