標籤:抽象類別 介面 多態 javase
關於Java基礎的文章,我覺得寫得還可以,以前發在了我其它的部落格了,肯定是原創,現在再分享給大家出來。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
抽象類別、介面、多態都是物件導向中很基礎的東西,我相信看到能本篇部落格的人本不會再糾結它的基本定義了,本篇文章將盡量的更加深層次的挖掘其內涵,希望能對大家有協助。
一、抽象類別
1、形式
abstract class Ceshi { abstract void show(); } class DemoA extends Ceshi { void show() { System.out.print("Hello world"); } }
2、特點
a、抽象類別不可以被執行個體化
b、抽象類別必須有其子類覆蓋了所有抽象方法後,該子類才可以執行個體化,否則,該子類還是抽象類別。
c、抽象方法必須定義在抽象類別中,該類必須也被abstract修飾。
3、那麼問題來了
a、抽象類別有建構函式嗎?
有,用於給子類執行個體化。
b、抽象類別可以不定義抽象方法嗎?
事實上是可以的,但是很少見。
c、抽象類別和一般類的異同點。
相同點:
抽象類別和一般類都是用來描述事物的,都在內部定了成員。
不同點:
1,一般類有足夠的資訊描述事物。抽象類別描述事物的資訊有可能不足。
2,一般類中不能定義抽象方法,只能定非抽象方法。抽象類別中可定義抽象方法,同時也可以定義非抽象方法。
3,一般類可以被執行個體化。抽象類別不可以被執行個體化。
二、介面
從某種意義上說,介面是一種特殊形式的抽象類別,在java語言中抽象類別表示的是一種繼承關係,一個類只能繼承繼承一個抽象類別,而一個類卻可以實現多個介面。
我們都知道介面的定義方式是
interface Demo{ void show(); }
其實對於介面當中常見的成員:而且這些成員都有固定的修飾符。
a、全域常量: public static final
b、抽象方法:public abstract
1、由此得出結論,介面中的成員都是公用的許可權。即全寫是
interface Demo{ public static final int num = 4; public abstract void showa();}
2、介面特點
a、介面是對外暴露的規則,是程式功能的擴充。
b、介面降低了耦合性。
c、一個類可以實現多個介面
abstract class Test2 extends Q implements A,Z{}
3、介面與抽象類別異同點
相同點:
都是不斷向上抽取而來的。
不同點:
1,抽象類別需要被繼承,而且只能單繼承。介面需要被實現,而且可以多實現。
2,抽象類別中可以定義抽象方法和非抽象方法,子類繼承後,可以直接使用非抽象方法。介面中只能定義抽象方法,必須由子類去實現。
三、多態
一個對象有不同的形態,這就是多態。
比如 動物 ani = new 狗();
這就是多態在代碼中的體現:父類引用指向子類對象。
1、多態好處與弊端
多態的好處:提高了代碼的擴充性,前期定義的代碼可以使用後期的內容。
多態的弊端:前期定義的內容不能使用(調用)後期子類的特有內容。
2、向下轉型
動物 ani = new Cat();Cat c = (Cat)ani;
3、內部類
內部類是我們以前建的比較少的,其實就是類裡面有類。
class Outer//外部類{ class Inner// 內部類。 { } }
a、內部類如何引用外部類?
內部類持有了外部類的引用。 外部類名.this。
class Outer{ int num = 3; class Inner { int num = 4; void show() { int num = 5; System.out.println(Outer.this.num); } } void method() { new Inner().show(); }}
3、內部類可以存放在局部位置上,且在局部位置上只能訪問局部中被final修飾的局部變數。
class Outer{ void method() { final int x = 9; class Inner { public String toString() { } } }}
4、匿名內部類
匿名內部類是內部類的一種簡寫形式,其實就是一個匿名子物件。
public void method() { new Demo()//匿名內部類。 { void show() { System.out.println("show:"+num); } }.show(); }
四、最後
抽象類別、介面和多態雖然簡單,但是常用,尤其像是內部類、匿名內部類這些我們以前接觸較少,更應該重點掌握。
java基礎2:抽象類別、介面與多態