抽象類、接口、多態(tài)都是面向?qū)ο笾泻芑A(chǔ)的東西,我相信看到能本篇博客的人本不會(huì)再糾結(jié)它的基本定義了,本篇文章將盡量的更加深層次的挖掘其內(nèi)涵,希望能對(duì)大家有幫助。
一、抽象類1、形式
1 abstract class Ceshi 2 { 3 abstract void show(); 4 } 5 class DemoA extends Ceshi 6 { 7 void show() 8 { 9 System.out. 2、特點(diǎn)
a、抽象類不可以被實(shí)例化
b、抽象類必須有其子類覆蓋了所有抽象方法后,該子類才可以實(shí)例化,否則,該子類還是抽象類。
c、抽象方法必須定義在抽象類中,該類必須也被abstract修飾。
3、那么問(wèn)題來(lái)了
a、抽象類有構(gòu)造函數(shù)嗎?
有,用于給子類實(shí)例化。
b、抽象類可以不定義抽象方法嗎?
事實(shí)上是可以的,但是很少見(jiàn)。
c、抽象類和一般類的異同點(diǎn)。 相同點(diǎn): 抽象類和一般類都是用來(lái)描述事物的,都在內(nèi)部定了成員。 不同點(diǎn): 1,一般類有足夠的信息描述事物。抽象類描述事物的信息有可能不足。 2,一般類中不能定義抽象方法,只能定非抽象方法。抽象類中可定義抽象方法,同時(shí)也可以定義非抽象方法。 3,一般類可以被實(shí)例化。抽象類不可以被實(shí)例化。
二、接口 從某種意義上說(shuō),接口是一種特殊形式的抽象類,在java語(yǔ)言中抽象類表示的是一種繼承關(guān)系,一個(gè)類只能繼承繼承一個(gè)抽象類,而一個(gè)類卻可以實(shí)現(xiàn)多個(gè)接口。
我們都知道接口的定義方式是
interface Demo{ void show(); }其實(shí)對(duì)于接口當(dāng)中常見(jiàn)的成員:而且這些成員都有固定的修飾符。a、全局常量: public static final
b、抽象方法:public abstract
1、由此得出結(jié)論,接口中的成員都是公共的權(quán)限。即全寫(xiě)是
interface Demo{ public static final int num = 4; public abstract void showa();}2、接口特點(diǎn)
a、接口是對(duì)外暴露的規(guī)則,是程序功能的擴(kuò)展。
b、接口降低了耦合性。
c、一個(gè)類可以實(shí)現(xiàn)多個(gè)接口
abstract class Test2 extends Q implements A,Z{}3、接口與抽象類異同點(diǎn)
相同點(diǎn): 都是不斷向上抽取而來(lái)的。
不同點(diǎn):
1,抽象類需要被繼承,而且只能單繼承。接口需要被實(shí)現(xiàn),而且可以多實(shí)現(xiàn)。
2,抽象類中可以定義抽象方法和非抽象方法,子類繼承后,可以直接使用非抽象方法。接口中只能定義抽象方法,必須由子類去實(shí)現(xiàn)。
三、多態(tài) 一個(gè)對(duì)象有不同的形態(tài),這就是多態(tài)。
比如 動(dòng)物 ani = new 狗();
這就是多態(tài)在代碼中的體現(xiàn):父類引用指向子類對(duì)象。
1、多態(tài)好處與弊端
多態(tài)的好處:提高了代碼的擴(kuò)展性,前期定義的代碼可以使用后期的內(nèi)容。
多態(tài)的弊端:前期定義的內(nèi)容不能使用(調(diào)用)后期子類的特有內(nèi)容。
2、向下轉(zhuǎn)型
動(dòng)物 ani = new Cat();Cat c = (Cat)ani;
3、內(nèi)部類
內(nèi)部類是我們以前建的比較少的,其實(shí)就是類里面有類。
class Outer//外部類{ class Inner// 內(nèi)部類。 { } } a、內(nèi)部類如何引用外部類?
內(nèi)部類持有了外部類的引用。 外部類名.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、內(nèi)部類可以存放在局部位置上,且在局部位置上只能訪問(wèn)局部中被final修飾的局部變量。
class Outer{ void method() { final int x = 9; class Inner { public String toString() { } } }}4、匿名內(nèi)部類
匿名內(nèi)部類是內(nèi)部類的一種簡(jiǎn)寫(xiě)形式,其實(shí)就是一個(gè)匿名子對(duì)象。
public void method() { new Demo()//匿名內(nèi)部類。 { void show() { System.out.println("show:"+num); } }.show(); }四、最后抽象類、接口和多態(tài)雖然簡(jiǎn)單,但是常用,尤其像是內(nèi)部類、匿名內(nèi)部類這些我們以前接觸較少,更應(yīng)該重點(diǎn)掌握。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注