面向對象7:多態
阿新 • • 發佈:2017-06-14
維護 clas pre pan 自動 1.3 繼承 重用 綁定
1.多態 1.1多態:一個失誤的多種形態 1.2多態的表現 行為(方法)多態:重寫和重載 引用多態(動態綁定):編譯時的類型和運行時不一致的這種現象 動態綁定 註意:引用多態存在繼承關系 自動類型轉換 char c=10; int a=c; 強制類型轉換 int a=10; char c=(char)a; 向上轉型 父類=子類; Pet p= new Dog(); 向下轉型 子類 =(子類)父類; Dog d=(Dog) p; 註意:java.lang.ClassCastException:類型轉換異常 父類的運行時類型跟要轉成的子類的類型不一致 1.3 多態【子類就是父類】 為什麽使用多態: 提高程序可擴展性,可維護性,提高代碼可重用性 什麽是多態: 具有表現多種形態能力的特征 同一個實現接口,使用不同的實例而執行不同的操作//子類,圓形 public class Circular extends Graph { private final double X=3.14; //半徑 public Circular(double r){ super(r); } public void getArea(){ double m=(super.getLen()*X*X); System.out.println("圓的半徑為"+super.getLen()+"\n面積為"+m); } //子類,長方形 public class Rectangle extends Graph { private double weight; //寬度 public Rectangle(double len,double weight){ super(len); this.weight=weight; } public double getWeight(){ return weight; } public void getArea(){ double m=(super.getLen()*this.getWeight()); System.out.println("長方形的長為"+super.getLen()+",寬為"+this.weight+"\n面積為"+m); } //父類 public abstract class Graph { private double len; //圖形的邊長 public Graph(double len){ this.len=len; } //獲取長度 public double getLen(){ return len; } //抽象面向方法 public abstract void getArea(); }
面向對象7:多態