第十八课:多态性
程序员文章站
2022-07-14 19:00:34
...
特点
- 对象的多态性: 分家导致的财产纠纷
- 方法 的多态性:双重事件
// 素食
interface Vegetarian{
}
class Bird{
}
class Animal{
public void run(){
System.out.println("Animal----Run is nature");
}
public void eat(){
System.out.println("Animal----eat is nature");
}
public void eat(String str){
System.out.println("Animal----eat is nature");
}
// public String toString(){
// return "fds";
// }
}
public class Deer extends Animal implements Vegetarian{
String name;
public void run(){
System.out.println("Deer----Run is nature");
}
public void sleep(){
System.out.println("Deer----sleep is nature");
}
public String toString(){
return name + " is a deer";
}
public static void main(String[] args) {
/*
向上转(类)型
多态性是指对象能够有多种形态。(主要体现在 1.方法的重载和重写 2. 对象的多态性)
在 OOP 中最常用的多态性发生在当父类引用指向孩子类对象时。
*/
Deer d = new Deer();
//父类引用指向孩子类对象
Animal a = d;
a.run();// Deer----Run is nature
Vegetarian v = d;
Object o = d;
/*
现在 Deer 类是多态的,因为他有多个继承机制。针对上面的例子有以下说法:
Deer 就是 Animal
Deer 就是 Vegetarian
Deer 就是 Deer
Deer 就是 Object
*/
// 所有的引用变量 d, a, v, o 引用同一个对象 Deer。
System.out.println(d instanceof Deer);
System.out.println(a instanceof Deer);
System.out.println(v instanceof Deer);
System.out.println(o instanceof Deer);
/*
对象的多态性
向上转(类)型:程序会自动完成
父类 父类对象 = 子类实例 (该父类对象只能调用父子交集的部分)
*/
Animal animal = new Deer();
animal.run(); // 方法重写
animal.eat();
// animal.sleep();// 不能被调用
System.out.println("-----------------------");
// 向下转型: 强制类型转换(一定先发生向上转型 才能发生向下转型)
// 子类 子类对象 = (子类)父类实例
// Animal ani = new Animal(); //ClassCastException 类型转换异常
Animal ani = new Deer();
Deer deer = (Deer)ani;
deer.run();
deer.eat();// 父类自己方法
deer.sleep(); // 子类自己的方法
deer.name = "dr";
System.out.println(deer);
}
}
上一篇: 科技必须为人服务,才能得以生存
下一篇: 第十八课--H5Web Workers