国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

詳解java基礎(chǔ)--抽象類、接口與多態(tài)

2019-11-14 21:54:21
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
詳解java基礎(chǔ)--抽象類、接口與多態(tài)

  抽象類、接口、多態(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)掌握。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 绥阳县| 沙坪坝区| 闸北区| 岳阳市| 江川县| 延长县| 湟中县| 西乌| 安达市| 桦南县| 巨鹿县| 长兴县| 赤峰市| 济南市| 宁明县| 奉化市| 岳西县| 那坡县| 鄯善县| 彰化县| 丹棱县| 栾城县| 田东县| 会昌县| 铜梁县| 大足县| 晋城| 阿尔山市| 林口县| 阿勒泰市| 北安市| 隆林| 西盟| 德阳市| 金阳县| 东城区| 马尔康县| 康乐县| 华安县| 丰台区| 威宁|