溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Android_Log_2_面向?qū)ο笠c(diǎn)摘錄

發(fā)布時(shí)間:2020-07-06 22:18:54 來源:網(wǎng)絡(luò) 閱讀:424 作者:一劍圍城 欄目:移動(dòng)開發(fā)


 

1.構(gòu)造方法:

  如果類中不寫構(gòu)造方法,編譯器會(huì)默認(rèn)添加構(gòu)造方法,內(nèi)部只有一句super();

   Class A {

     public A(){

       super()

     }

    }

 

2. this是實(shí)例內(nèi)部的一個(gè)特殊引用,保存當(dāng)前實(shí)例的內(nèi)存地址

  方便構(gòu)造方法之間的相互調(diào)用,通常在參數(shù)少的構(gòu)造方法中調(diào)用參數(shù)多的構(gòu)造方法

  this() 必須是構(gòu)造方法中的首行代碼

    public A() {

      this(0);

        …

}

 

3. 方法重載 Overload。同名不同參。簡化對外接口。

  public String getPrice(id);

  public string getPrice(name)

 

4. 訪問控制符


本類子類其他類

public

0000
protected000
[default]00

private0


使用原則:盡量使用private

Public是與其他開發(fā)者的一個(gè)契約,公共的成員會(huì)保持穩(wěn)定不變。

 

5. 繼承

  目的:代碼重用,只允許繼承一個(gè)父類

  繼承:有訪問權(quán)限的成員

  不繼承:不可見的成員、構(gòu)造方法、靜態(tài)成員

創(chuàng)建子類實(shí)例執(zhí)行順序

  1、先創(chuàng)建父類實(shí)例

  2、再創(chuàng)建子類實(shí)例

  3、兩個(gè)子類實(shí)例綁定在一起作為子類實(shí)例

構(gòu)造方法執(zhí)行順序

  1、先執(zhí)行父類構(gòu)造方法

  2、再執(zhí)行子類構(gòu)造方法

  3、默認(rèn)會(huì)執(zhí)行父類的無參構(gòu)造方法super()

如果父類不存在無參構(gòu)造方法,子類中必須手動(dòng)調(diào)用父類有參構(gòu)造方法。

 

6.  Super

1、子類中調(diào)用父類的構(gòu)造方法:Super()

2、但必須是構(gòu)造方法的首行代碼

3、重寫方法時(shí),可以調(diào)用父類中的同一個(gè)方法。

4、Super.funcName();

 

7. 重寫Override

用途:從父類繼承的方法,不滿足子類需要時(shí),在子類中重新編寫這個(gè)方法。

重寫的規(guī)則:

  1、  方法簽名(返回類型、方法名、參數(shù)列表)必須一致

  2、  訪問范圍不能變小

  3、不能拋出更多的異常

 

8. 多態(tài):

作用:以一致的類型來處理多種子類型實(shí)例

1、向上轉(zhuǎn)型:子類實(shí)例轉(zhuǎn)為父類類型

Shape s = new Line();

2、向上轉(zhuǎn)型,子類中特有成員被因擦,只能調(diào)用父類中的通用成員。

3、向下轉(zhuǎn)型,必須強(qiáng)制轉(zhuǎn)型

4、被轉(zhuǎn)為父類類型的子類實(shí)例,可以還原為原始類型

Line line = (Line) s;

5、運(yùn)行期類型識別

instanceOf,對子類型和父類型都會(huì)返回true。

 

9. 抽象類:abstract

1、作用:

1).為子類提供通用代碼

2).為子類定義通用的API

2、半成品類,不能創(chuàng)建實(shí)例

3、包含抽象方法的類,必須是抽象類

4、抽象類不一定有抽象方法(不解)

 

10.  final

1、可以用來修飾變量、方法、類

2、常量的定義通常同時(shí)使用finalstatic一起使用

3、譯期優(yōu)化或運(yùn)行期優(yōu)化

           

       final byte a = 2;

       final byte b = 3;

       byte c= a + b;

     編譯期優(yōu)化為:byte c= 5;

4final方法:不能被子類重寫

5、final類:沒有子類,不能被繼承

 

11.  Static

1、靜態(tài)屬性

2、屬于類,而不屬于實(shí)例

3、調(diào)用時(shí),通常使用類名調(diào)用

4、能不用,盡量不用

5、屬于非面向?qū)ο笳Z法(基本數(shù)據(jù)類型也是)

6、共享的數(shù)據(jù)Math.PI

7、工具類方法:Math.sqrt();

8、靜態(tài)初始化塊:

Static {

      ….

}

第一次使用到其所在類的時(shí)候,會(huì)自動(dòng)執(zhí)行,并且只執(zhí)行這一次。

 

12.  接口

1、作用:結(jié)構(gòu)設(shè)計(jì)工具,用來解耦合

2、極端的抽象類

3、只能定義

    1)、抽象方法

    2)、常量

    3)、內(nèi)部類,內(nèi)部接口

4、所有的成員都是公共的

5、可以同時(shí)繼承多個(gè)接口

6、接口之間可繼承interface A extends B,C,D

 

13.  內(nèi)部類

  * 定義在類內(nèi)部或局部代碼塊中的類

  * 非靜態(tài)內(nèi)部類

       *) 屬于實(shí)例,要用外部類實(shí)例來創(chuàng)建

       *) 不能定義靜態(tài)成員

       

       class A {

           class Inner {

           }

       }

       

       A a = new A();

        A.Inner b = a.new Inner();

       A.Inner b = new A().new Inner();

  * 靜態(tài)內(nèi)部類

       class A {

           static class Inner {

           }

       }

        A.Inner a = new A.Inner();

  * 局部內(nèi)部類

       *) 局部內(nèi)部類,使用外面的局部變量必須加 final

       class A {

           void a(final int i) {

                final int j=10;

               

                class Inner {

                  void a() {

                    i+j

                  }

                }

                Inner a = new Inner();

           }

       }

  * 匿名內(nèi)部類

          Super s = new Super(){};

  * 為什么使用內(nèi)部類

   *) 基于個(gè)人設(shè)計(jì)理念

   *) 兩個(gè)類型關(guān)系緊密

   *) 完全隱藏類型

 

 


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI