Board logo

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

作者: tonyh    時間: 2019-9-2 18:35     標題: 繼承 (一)

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

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

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

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

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

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




  1. public class Ch68 {

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

  10. }

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

  29. class Dog extends Animal
  30. {
  31.         Dog(String n, int a, double w)
  32.         {
  33.                 super(n,a,w);//super():從子類別呼叫其父類別的建構式。
  34.         }
  35. }

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

作者: 趙一鳴    時間: 2019-9-2 20:17

  1. public class Ch68
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Dog d1 = new Dog("憨憨",2,1.28);
  6.                 Dog d2 = new Dog("球球",1,1.35);
  7.         Cat c1= new Cat("咪咪",3,0.95);
  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 n,int a,double w)
  19.     {
  20.             name = n;
  21.             age = a;
  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 n,int a,double w)
  32.     {
  33.             super(n,a,w);
  34.     }
  35. }
  36. class Cat extends Animal
  37. {
  38.     Cat(String n,int a,double w)
  39.     {
  40.             super(n,a,w);
  41.     }
  42. }
複製代碼

作者: 黃宇綸    時間: 2019-9-2 20:19

本帖最後由 黃宇綸 於 2019-9-3 22:53 編輯
  1. public class Ch01 {

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

作者: 洪翊展    時間: 2019-9-2 20:21

本帖最後由 洪翊展 於 2019-9-2 20:37 編輯
  1. public class Ch68 {

  2.         public static void main(String[] args) {
  3.          Dog d1=new Dog("憨憨",2,1.28);
  4.             Dog d2=new Dog("球球",1,1.35);
  5.             Cat c1=new Cat("咪咪",3,0.95);
  6.             d1.showProfile();
  7.             d2.showProfile();
  8.             c1.showProfile();

  9.         }

  10. }
  11. class An{
  12.         String name;
  13.         int age;
  14.         double wei;
  15.         An(String n,int a,double w)
  16.         {
  17.                 name=n;
  18.                 age=a;
  19.                 wei=w;
  20.                                
  21.                                
  22.         }
  23.         void showProfile(){
  24.                 System.out.println(name+"今年"+age+"歲,體重"+wei+"公斤");
  25.         }
  26. }
  27. class Dog extends An{
  28.        
  29.         Dog(String n,int a,double w)
  30.         {
  31.                 super(n,a,w);
  32.         }
  33. }
  34. class Cat extends An{
  35.        
  36.         Cat(String n,int a,double w)
  37.         {
  38.                 super(n,a,w);
  39.         }
  40. }
複製代碼

作者: 洪翊庭    時間: 2019-9-2 20:22

  1. public class Ch68 {

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

  10. }

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

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

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

作者: 黃宇瑄    時間: 2019-9-2 20:23

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

作者: 戴嘉禾    時間: 2019-9-2 20:24

  1. public class Ch68 {

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

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

  28.        
  29. }
  30. class Dog extends Animal{
  31.        
  32.         Dog(String n,int a,double w){
  33.                 super(n,a,w);
  34.         }
  35.        
  36.        
  37. }
  38.        
  39.        
  40. class Cat extends Animal{
  41.        
  42.         Cat(String n,int a,double w){
  43.                 super(n,a,w);
  44.         }
  45.        
  46.        
  47.        
  48. }
  49.        
  50.        
複製代碼

作者: 李沛昂    時間: 2019-9-2 20:32

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

作者: may    時間: 2019-9-12 19:40

  1. public class Ch68 {

  2.     public static void main(String[] args) {
  3.         Dog d1=new Dog("憨憨",2,1.28); //利用Dog子類別,創建一個Dog物件,()內要有它和建構子參數對應的值。
  4.         Dog d2=new Dog("球球",1,1.35);
  5.         Cat c1=new Cat("咪咪",3,0.95);
  6.         d1.showProfile();
  7.         d2.showProfile();
  8.         c1.showProfile();
  9.     }

  10. }

  11. class Animal{       //自建類別
  12.    
  13.     String name;       //定義屬性
  14.     int age;           //定義屬性
  15.     double weight;     //定義屬性
  16.    
  17.     Animal(String n, int a, double w)   //定義建構子,建構子規範了新物件應有的屬性,透過建構子,快速的把物件初始化。
  18.     {
  19.             name=n; //把建構子的參數n指派給此類別所產生的物件,作為它的屬性。
  20.             age=a;  //若建構子的參數名稱和物件定義的屬性名稱一定,則寫成 this.age=age; 以免編繹器分不清。
  21.             weight=w;
  22.     }
  23.    
  24.     void showProfile()  定義物件有個方法,它能輸出一段訊息。
  25.     {
  26.             System.out.println(name+"今年"+age+"歲,體重"+weight+"公斤.");
  27.     }      
  28. }

  29. class Dog extends Animal //定義Dog子類別,繼承自Animal類別
  30. {
  31.     Dog(String n, int a, double w)
  32.     {
  33.             super(n,a,w); // 建構子不能繼承,所以調用Animal建構子使用,以節省程式碼
  34.     }
  35. }

  36. class Cat extends Animal   //定義Cat子類別,繼承自Animal類別
  37. {
  38.     Cat(String n, int a, double w) // 建構子不能繼承,所以調用Animal建構子使用,以節省程式碼
  39.     {
  40.             super(n,a,w);
  41.     }
  42. }
複製代碼

作者: 鄭楀諺    時間: 2019-9-13 10:15

本帖最後由 鄭楀諺 於 2019-9-13 10:26 編輯
  1. public class Morris {

  2.         public static void main(String[] args) {
  3.         Dog d1=new Dog("憨憨",2,1.28);
  4.         Dog d2=new Dog("球球",1,1.35);
  5.         Cat c1=new Cat("咪咪",3,0.95);
  6.         d1.showProfile();
  7.         d2.showProfile();
  8.         c1.showProfile();
  9.     }
  10. }
  11.     class Animal {
  12.             String name;
  13.             int age;
  14.             double weight;
  15.             Animal(String n, int a, double w)
  16.             {
  17.                     name = n;
  18.                     age = a;
  19.                     weight = w;
  20.             }
  21.             void showProfile(String name, int age, double weight)
  22.             {
  23.                     System.out.println(name+"今年"+age+"歲,體重"+"公斤.");
  24.             }
  25.     }

  26.     class Dog extends Animal{
  27.             Dog(String n, int a, double w)
  28.             {
  29.                     super(n, a, w);
  30.             }
  31.     }

  32.     class Cat extends Animal{
  33.             Cat(String n, int a, double w)
  34.             {
  35.                     super(n, a, w);
  36.             }
  37.     }
複製代碼





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