1. 程式人生 > 其它 >java多型概述特點轉型I

java多型概述特點轉型I

 1 package face_09;
 2 
 3 import com.sun.jdi.Method;
 4 
 5 /*
 6  * 物件的多型性。
 7  * class 動物
 8  * {}
 9  * 
10  * class 貓 extends 動物
11  * {}
12  * 
13  * class 狗 extends 動物
14  * {}
15  * 
16  * 貓 x = new 貓();
17  * 
18  * 動物 x = new 貓();//一個物件,兩種形態。
19  * 
20  * 貓這類事物既具備貓的形態,又具備著動物的形態。
21  * 這就是物件的多型性。
22 * 23 * 簡單說:就是一個物件對應著不同型別。 24 * 25 * 多型在程式碼中的體現: 26 * 父類或者介面的引用指向其子類的物件。 27 * 多型的好處: 28 * 提高了程式碼的擴充套件性,前期定義的程式碼可以使用後期的內容。 29 * 30 * 多型的弊端: 31 * 前期定義的內容不能使用(呼叫)後期子類的特有內容。 32 * 33 * 多型的前提: 34 * 1,必須有關係,繼承,實現。 35 * 2,要有覆蓋。 36 */ 37 abstract class Animal { 38 abstract
void eat(); 39 } 40 41 class Dog extends Animal { 42 void eat() { 43 System.out.println("啃骨頭"); 44 } 45 void lookHome() { 46 System.out.println("看家"); 47 } 48 } 49 class Cat extends Animal { 50 void eat() { 51 System.out.println("吃魚"); 52 } 53 void
catchMouse() { 54 System.out.println("抓老鼠看家"); 55 } 56 } 57 class Pig extends Animal { 58 void eat() { 59 System.out.println("飼料"); 60 } 61 void gongDi() { 62 System.out.println("拱地"); 63 } 64 } 65 public class DuoTaiDemo { 66 public static void main(String[] args) { 67 //Cat c = new Cat(); 68 //c.eat(); 69 //Dog d = new Dog(); 70 //method(c); 71 //method(d); 72 //method(new Pig()); 73 Animal a = new Cat();//自動型別提升,貓物件提升了動物型別。但是特有功能無法訪問 74 //作用就是限制對特有功能的訪問。 75 //專業講:向上轉型。 76 //如果還想用具體動物貓的特有功能。 77 //你可以將該物件進行向下轉型。 78 Cat c = (Cat)a;//*向下轉型的目的是為了使用子類中的特有方法。 79 c.catchMouse(); 80 c.eat(); 81 //*注意:對於轉型,自始至終都是子類物件在做著型別的變化 82 //Animal a1 = new Animal(); 83 Animal a1 = new Dog(); 84 Cat c1 = (Cat)a1;//ClassCastException型別轉換異常 85 //a.eat(); 86 } 87 public static void method(Animal a) { 88 a.eat(); 89 } 90 /* 91 public static void method(Cat c) { 92 c.eat(); 93 } 94 public static void method(Dog d) { 95 d.eat(); 96 } 97 */ 98 99 }
View Code