Java 中的繼承
繼承:
java中的抽象類用法原理:
1 /* 2 當多個類中出現相同功能,但是功能主體不同, 3 這是可以進行向上抽取。這時,只抽取功能定義,而不抽取功能主體。 4 5 抽象:看不懂。 6 7 抽象類的特點: 8 1,抽象方法一定在抽象類中。(因為抽象方法沒有具體實現的方法,所以不能用抽象類創建對象,如果在抽象類,那么類的對象調用該方法不具備意義,所以抽象方法在抽象類中,也即滿足第三條)。類中有抽象方法,則稱這個類為抽象類 9 2,抽象方法和抽象類都必須被abstract關鍵字修飾。 10 3,抽象類不可以用new創建對象。因為調用抽象方法沒意義。 11 4,抽象類中的抽象方法要被使用,必須由子類復寫起所有的抽象方法后,建立子類對象調用。 12 如果子類只覆蓋了部分抽象方法,那么該子類還是一個抽象類。 14 15 抽象類和一般類沒有太大的不同。 16 該如何描述事物,就如何描述事物,只不過,該事物出現了一些看不懂的東西。 17 這些不確定的部分,也是該事物的功能,需要明確出現。但是無法定義主體。通過抽象方法來表示。 18 抽象類比一般類多個了抽象函數。就是在類中可以定義抽象方法。 19 抽象類不可以實例化。 20 22 特殊:抽象類中可以不定義抽象方法,這樣做僅僅是不讓該類建立對象。 23 24 包含抽象方法的類稱為抽象類,但並不意味着抽象類中只能有抽象方法,它和普通類一樣,同樣可以擁有成員變量和普通的成員方法。 25 練習: 26 27 abstract 關鍵字,和哪些關鍵字不能共存。(final private static三種不能同abstract一塊用) 28 final:被final修飾的類不能有子類(不能被繼承http://www.cnblogs.com/itcqx/p/5541659.html)。而被abstract修飾的類一定是一個父類(需要被繼承才能使用)。所 以不能共存 29 private: 抽象類中的私有的抽象方法,不被子類所知,就無法被復寫。 30 而抽象方法出現的就是需要被復寫。所以不能共存 31 static:如果static可以修飾抽象方法,那么連對象都省了,直接類名調用就可以了。 32 可是抽象方法運行沒意義。所以不能類名.抽象方法,所以直接不能跟static共存 33 34 36 抽象類中是否有構造函數? 37 有,抽象類是一個父類,要給子類提供實例的初始化。所以存在構造函數 38 39 */ 40 41 abstract class Student 42 { 43 abstract final void study(); 44 //abstract void study1(); 45 void sleep() 46 { 47 System.out.println("躺着"); 48 } 49 } 50 /* 51 52 class ChongCiStudent extends Student 53 { 54 void study() 55 { 56 System.out.println("chongci study"); 57 } 58 } 59 60 class BaseStudent extends Student 61 { 62 void study() 63 { 64 System.out.println("base study"); 65 } 66 } 67 68 class AdvStudent extends Student 69 { 70 void study() 71 { 72 System.out.println("adv study"); 73 } 74 } 75 */ 76 class AbstractDemo 77 { 78 public static void main(String[] args) 79 { 80 //new Student(); 81 //new BaseStudent().study(); 82 } 83 }
