39 lines
1.5 KiB
Java
39 lines
1.5 KiB
Java
package com.inmind.poly08;
|
|
/*
|
|
多态的格式和使用
|
|
|
|
多态的前提:【重点】
|
|
继承或者实现【二选一】
|
|
方法的重写【意义体现:不重写,无意义】
|
|
父类引用指向子类对象【格式体现】
|
|
--------------------------------------------------
|
|
多态中成员变量和成员方法的访问特点
|
|
在多态中的成员变量的访问特点:
|
|
1.通过对象直接访问成员变量,对象创建时,=左边是谁,就优先使用谁的成员变量,如果没有向上找
|
|
2.通过对象调用成员方法,间接操作成员变量,方法属于谁,就优先使用谁的方法,如果没有向上找
|
|
|
|
编译看左边,运行看右边!!!!
|
|
*/
|
|
public class Demo08 {
|
|
public static void main(String[] args) {
|
|
//普通的面向对象的写法
|
|
Dog dog = new Dog();
|
|
Cat cat = new Cat();
|
|
//多态写法:父类引用指向子类对象
|
|
Animal animal1 = new Dog();
|
|
Animal animal2 = new Cat();
|
|
|
|
animal1.run();
|
|
animal2.run();
|
|
//访问animal2的属性
|
|
System.out.println(animal2.num);
|
|
System.out.println(animal2.numFu);
|
|
//System.out.println(animal2.numZi);//在多态中子类的属性无法访问
|
|
//访问animal2的行为
|
|
animal2.getNumFu();//编译看左边,运行看右边
|
|
//编译看左边,左边是Animal类,类中没有getNumZi,并且Animal的父类也没有getNumZi方法,所以编译不通过
|
|
//animal2.getNumZi();
|
|
animal2.run();
|
|
}
|
|
}
|