1. 程式人生 > >Java繼承概述 以及Java繼承案例和繼承的好處

Java繼承概述 以及Java繼承案例和繼承的好處

自己 復用 dem void dsd 屬性 關鍵字 相同屬性 pre

Java繼承概述

1.多個類中存在相同屬性和行為時,將這些內容抽取到單獨一個類中,那麽多個類無需再定義這些相同屬性和行為,只要繼承那個類即可。

2.在Java中通過extends關鍵字可以實現類與類的繼承。

  例如:class 子類名 extends 父類名 {}

3.單獨的這個類稱為父類,基類或者超類;這多個類可以稱為子類或者派生類。

4.有了繼承以後,我們定義一個類的時候,可以在一個已經存在的類的基礎上,還可以定義自己的新成員。

-----------------------------------------------------------------------------

首先我來寫兩個代碼:


//定義學生類
class Student {
  String name;
  int age;

  public Student() {}

  //getXxx()/setXxx()

  public void eat() {
    System.out.println("吃飯");
  }
}

//定義老師類
class Teacher {
  String name;
  int age;

  public Teacher() {}

  //getXxx()/setXxx()

  public void eat() {
    System.out.println("吃飯");
  }
}

我們觀察上面兩個代碼:
  發現name,age成員變量,以及getXxx()/setXxx(),還有eat()等都是相同的。
  如果我們後來繼續定義類,舉例:工人類,軍人類。他們是不是也具備這些內容呢?
  那麽,我們每一次定義這樣的類的時候,都要把這些重復的內容都重新定義一遍。
  麻煩不?當然麻煩。所以,我們要考慮改進?
那麽如何改進呢?
  我這想的:我能不能把這些相同的內容給定義到一個獨立的類中。
  然後,讓這多個類和這個獨立的類產生一個關系,有了這個關系後,
  這多個類就可以具備這個獨立的類的功能。
  為了實現這個效果,Java就提供了一個技術:繼承。

  父親:
    4個兒子

繼承怎麽表示呢?繼承的格式是什麽樣子的呢?


class Fu {}

class Zi extends Fu {

}

我們就回頭修改我們的代碼:
class Person {
  String name;
  int age;

  public Person() {}

  //getXxx()/setXxx()

  public void eat() {
    System.out.println("吃飯");
  }
}

class Student extends Person {
  public Student() {}
}

class Teacher extends Person {
  public Teacher() {}
}

-----------------------------------------------------------------------------

Java繼承案例和繼承的好處

 1 /*
 2     繼承概述:
 3         把多個類中相同的內容給提取出來定義到一個類中。
 4         
 5     如何實現繼承呢?    
 6         Java提供了關鍵字:extends
 7         
 8     格式:
 9         class 子類名 extends 父類名 {}
10         
11     好處:
12         A:提高了代碼的復用性。
13         B:提高了代碼的維護性。
14         C:讓類與類之間產生了關系,是多態的前提。
15     
16         類與類之間產生了關系,其實也是繼承的一個弊端:
17         類的耦合性增強了。
18         
19         開發的原則:低耦合,高內聚。
20         耦合:類與類之間的關系。
21         內聚:就是自己完成某件事情的能力。
22 */
23 
24 //使用繼承前
25 /*
26 class Student {
27     public void eat() {
28         System.out.println("吃飯");
29     }
30     
31     public void sleep() {
32         System.out.println("睡覺");
33     }
34 }
35 
36 class Teacher {
37     public void eat() {
38         System.out.println("吃飯");
39     }
40     
41     public void sleep() {
42         System.out.println("睡覺");
43     }
44 }
45 */
46 
47 //使用繼承後
48 class Person {
49     public void eat() {
50         System.out.println("吃飯");
51     }
52     
53     public void sleep() {
54         System.out.println("睡覺");
55     }
56 }
57 
58 class Student extends Person {}
59 
60 class Teacher extends Person {}
61 
62 class ExtendsDemo {
63     public static void main(String[] args) {
64         Student s = new Student();
65         s.eat();
66         s.sleep();
67         System.out.println("-------------");
68         
69         Teacher t = new Teacher();
70         t.eat();
71         t.sleep();
72     }
73 }

Java繼承概述 以及Java繼承案例和繼承的好處