Board logo

標題: 繼承 (一) [打印本頁]

作者: tonyh    時間: 2015-4-11 14:31     標題: 繼承 (一)

本帖最後由 tonyh 於 2015-4-15 14:33 編輯

所謂繼承(Inheritance)是一種類別之間的關係,可以利用現有類別衍生出新的類別,新的類別可以與現有類別分享共同的屬性、方法與資料結構等,在物件導向程式設計中利用繼承,可以達到程式碼重複使用的優點。

繼承功能可以在建立新類別時,修改、添加或繼承現有類別的定義。建立一種類別後,如果須要再建立許多大同小異的類別,就可以利用繼承特性,分別繼承這個現有的類別,並且將差異部分加以修改或添加。

被繼承的類別稱為父類別或基礎類別(Base Class),而經由繼承產生的類別,則稱為子類別或衍生類別(Derived Class),子類別不僅可以繼承父類別的特性(屬性與方法),也可以修改或添加特性。

C++支援多重繼承(一個類別擁有多個父類別),但Java不直接支援多重繼承,類似的機制則必須透過介面來完成。

歸納上述,關於繼承的四大特性如下:

1.子類別可以繼承父類別的特性。
2.子類別可以添加新的特性。
3.子類別可以修改並重新定義自父類別繼承下來的特性。
4.子類別繼承父類別時,不需要複製父類別的程式碼,造成程式碼重複。


[attach]1200[/attach]
  1. public class ch66
  2. {
  3.     public static void main(String args[])
  4.     {
  5.         Dog d1=new Dog("憨憨",2,1.28);
  6.         d1.showProfile();
  7.         Dog d2=new Dog("球球",1,1.35);
  8.         d2.showProfile();
  9.         Cat c1=new Cat("咪咪",3,0.95);
  10.         c1.showProfile();
  11.     }
  12. }

  13. class Animal
  14. {
  15.     String name;
  16.     int age;
  17.     double w;
  18.     Animal(String name, int age, double w)
  19.     {
  20.         this.name=name;
  21.         this.age=age;
  22.         this.w=w;
  23.     }
  24.     void showProfile()
  25.     {
  26.         System.out.println(name+"今年"+age+"歲,體重"+w+"公斤.");
  27.     }
  28. }

  29. class Dog extends Animal
  30. {
  31.     Dog(String name, int age, double w)
  32.     {
  33.         super(name, age, w);
  34.     }
  35. }

  36. class Cat extends Animal
  37. {
  38.     Cat(String name, int age, double w)
  39.     {
  40.         super(name, age, w);
  41.     }
  42. }
複製代碼

作者: 張瀚仁    時間: 2015-4-11 15:13

  1. public class ch64
  2. {
  3.     public static void main(String args[])
  4.     {
  5.         Dog d1=new Dog("憨憨",2,3.8);
  6.         Dog d2=new Dog("球球",1,2.5);
  7.         Cat c1=new Cat("咪咪",5,3.2);
  8.         d1.showProfile();
  9.         d2.showProfile();
  10.         c1.showProfile();
  11.     }
  12. }
  13. class Animal
  14. {
  15.     String name;
  16.     int age;
  17.     double w;
  18.     Animal(String name, int age, double w)
  19.     {
  20.         this.name=name;
  21.         this.age=age;
  22.         this.w=w;
  23.     }

  24. }
  25. class Dog extends Animal
  26. {
  27.     Dog(String name, int age, double w)
  28.     {
  29.        super(name ,age ,w);
  30.     }
  31. }
  32. class Cat extends Animal
  33. {
  34.     Cat(String name, int age, double w)
  35.     {
  36.         super(name ,age ,w);
  37.     {
  38. }
複製代碼

作者: 林以諾    時間: 2015-4-11 15:14

  1. public class ch64
  2. {
  3.     public static void main(String args[])
  4.     {
  5.         Dog d1=new Dog("憨憨",2,3.8);
  6.         Dog d2=new Dog("球球",1,2.5);
  7.         Cat c1=new Cat("咪咪",5,3.2);
  8.         d1.showProfile();
  9.         d2.showProfile();
  10.         c1.showProfile();
  11.     }
  12. }
  13. class Animal
  14. {
  15.     String name;
  16.     int age;
  17.     double w;
  18.     Animal(String name, int age, double w)
  19.     {
  20.         this.name=name;
  21.         this.age=age;
  22.         this.w=w;
  23.         sum++;
  24.     }
  25.     void showProfile()
  26.     {
  27.         System.out.println(name+"今年"+age+"歲,體重"+w+"公斤.");
  28.     }
  29. }
  30. class Dog
  31. {
  32.      Dog(String name, int age, double w)
  33.     {
  34.         super(name ,age , w);
  35.     }
  36. }
  37. class Cat
  38. {
  39.      Cat(String name, int age, double w)
  40.     {
  41.         super(name ,age , w);
  42.     }
  43. }
複製代碼

作者: 許逸群    時間: 2015-4-11 15:16

  1. public class ch64
  2. {
  3.     public static void main(String args[])
  4.     {
  5.          Dog d1=new Dog("憨憨",2,3.8);
  6.          Dog d2=new Dog("球球",1,2.1);
  7.          Cat c1=new Cat("咪咪",5,3.2);
  8.          d1.showProfile();
  9.          d2.showProfile();
  10.          c1.showProfile();
  11.     }
  12. }
  13. class Animal
  14. {
  15.     String name;
  16.     int age;
  17.     double w;
  18.     Animal(String name, int age, double w)
  19.     {
  20.         this.name=name;
  21.         this.age=age;
  22.         this.w=w;
  23.     }

  24. }
  25. class Dog extends Animal
  26. {
  27.     Dog(String name, int age, double w)
  28.     {
  29.        super(name ,age ,w);
  30.     }
  31. }
  32. class Cat extends Animal
  33. {
  34.     Cat(String name, int age, double w)
  35.     {
  36.         super(name ,age ,w);
  37.     {
  38. }
複製代碼





歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://seed.istak.org.tw/) Powered by Discuz! 7.2