多态、抽象类、接口
- 面向对象(多态的概述及其代码体现)
- A:多态(polymorphic)概述:
- 实物存在的多种形态
- B:多态前提:
- a:要有继承关系。
- b:要有方法重写。
- c:要有父类引用指向子类对象。
- C:案例演示
- 代码体现多态
class Demo1_Polymorphic {]
public static void main (String[] args) {
Cat c = new Cat();
c.eat();
Animal a = new Cat(); //此处为多态,父类引用指向子类对象
a.eat();
}
}
class Animal {
public void eat() {
System.out.println("动物吃饭");
}
}
class Cat extends Animal {
public void eat() {
System.out.println("猫吃鱼");
}
}
输出:猫吃鱼
猫吃鱼
2. 面向对象(多态中的成员访问特点值成员变量)
class Demo02_Polymorphic {]
public static void main (String[] args) {
Father f = new Son();
System.out.println(f.num);
Son s = new Son();
System.out.println(s.num);
}
}
/* 成员变量
编译看左边(父类),运行看左边(父类)
*/
class Father {
int num = 10;
}
class Son extends Father {
int num = 20;
}
输出:10,不是20
内存图:
3. 面向对象(多态中的成员访问特点之成员方法)
规律:成员方法:编译看左边(父类),运行看右边(子类)。
即:动态绑定。(编译看父类,运行看子类)
具体例子看下图:
4. 面向对象(多态中的成员访问特点之静态成员方法)
规律:
* 编译看左边(父类),运行看左边(父类)
* point:静态和类相关,算不上重写,所以访问还是左边的。只有非静态的成员方法,编译看左边,运行看右边。
5. 面向对象(多态中的向上转型和向下转型)