亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Java知識點(diǎn)總結(jié)(三個(gè)步驟)

syoya / 2483人閱讀

摘要:對于一個(gè)名為的外圍類和一個(gè)的內(nèi)部類,在編譯成功后,會出現(xiàn)這樣兩個(gè)文件和。

Java知識點(diǎn)總結(jié)(三個(gè)步驟)

@(Java知識點(diǎn)總結(jié))[Java, Java面向?qū)ο骫

[toc]

1-定義類 修飾符 訪問修飾符:

public

protected

default

private

其他修飾符

abstract:抽象類不能實(shí)例化,專門用于繼承的類
final:最終類不能被繼承

類名(駝峰命名法)

駝峰標(biāo)識- 每個(gè)單詞首字母大寫

extends

Java中的繼承是單一繼承

繼承關(guān)系中,會調(diào)用父類的構(gòu)造方法來構(gòu)造子類對象

當(dāng)父類存在無參構(gòu)造器時(shí),子類構(gòu)造器中 Super 關(guān)鍵字,因?yàn)樗鼤[式的調(diào)用父類的無參構(gòu)造器

public Son(){
    //Super();
}

當(dāng)父類沒有無參構(gòu)造器時(shí),子類需要顯示的調(diào)用帶參構(gòu)造器,否則編譯不通過。

public Son(參數(shù)類型 參數(shù)名){
    Super(參數(shù)名);
    this.參數(shù)名 = 參數(shù)名;
}

implements

一個(gè)類可以實(shí)現(xiàn)多個(gè)接口來扮演多個(gè)角色
多個(gè)接口之間用逗號隔開

內(nèi)部類 內(nèi)部類:

內(nèi)部類定義:在一個(gè)類的內(nèi)部在定義一個(gè)類

內(nèi)部類可以用多個(gè)實(shí)例,每個(gè)實(shí)例都有自己的狀態(tài)信息,而且與其他外部對象的信息互相獨(dú)立

在單個(gè)外部類中,可以讓多個(gè)內(nèi)部類已不同的方式實(shí)現(xiàn)同一個(gè)接口,或者繼承同一個(gè)類

創(chuàng)建內(nèi)部類對象的時(shí)刻并不依賴于外部類對象的創(chuàng)建。

內(nèi)部類并沒有令人迷惑的"is-a"關(guān)系,他就是一個(gè)獨(dú)立的實(shí)體

內(nèi)部類提供更好的封裝,除了該外部類,其他類都不能訪問

內(nèi)部類是個(gè)編譯時(shí)的概念,一旦編譯成功后,它就與外部類屬于兩個(gè)完全不同的類(當(dāng)然他們之間還是有聯(lián)系的)。對于一個(gè)名為OuterClass的外圍類和一個(gè)InnerClass的內(nèi)部類,在編譯成功后,會出現(xiàn)這樣兩個(gè)class文件:OuterClass.class和OuterClass$InnerClass.class。

成員內(nèi)部類

成員內(nèi)部類也是最普通的內(nèi)部類,它是外部類的一個(gè)成員,所以他是可以無限制的訪問外圍類的所有成員屬性和方法,盡管是private 的,但是外圍類要訪問內(nèi)部類的成員屬性和方法則需要通過內(nèi)部類的實(shí)例去訪問

在成員內(nèi)部類中要注意兩個(gè)點(diǎn):

成員內(nèi)部類中不能存在任何static的變量和方法

成員內(nèi)部類是依附外部類的,所以只有先創(chuàng)建了外部類才能創(chuàng)建內(nèi)部類

public class OuterClass {
private String name = "張三" ;

public void outPrint(){

System.out.println("我是外部類的方法");

}

// 內(nèi)部類
public class InnerClass{ // 可以聲明成public或private

//private static int id;  //成員內(nèi)部類中不能存在任何static的變量和方法;

public void innerPrint(){
 //可以直接使用外部類的屬性和方法
 System.out.println(name+"你好,我是內(nèi)部類");
 outPrint();
}

}

public InnerClass getInnerClass(){

return new InnerClass();

}
public static void main(String[] args) {

//InnerClass innerClass = new InnerClass(); // 不能直接實(shí)例化內(nèi)部類對象

//通過外部類調(diào)用內(nèi)部類
InnerClass innerClass = new OuterClass().new InnerClass();

OuterClass.InnerClass innerClass2 = new OuterClass().new InnerClass();

//通過get方法來獲取內(nèi)部類(推薦)
InnerClass innerClass3 = new OuterClass().getInnerClass();
innerClass3.innerPrint();

/*張三你好,我是內(nèi)部類
我是外部類的方法*/

}

}

局部內(nèi)部類

局部內(nèi)部類是嵌套在方法和作用于域的,對于這個(gè)類的使用主要是應(yīng)用與解決比較復(fù)雜的問題想創(chuàng)建一個(gè)類來輔助我們的解決方案,到那時(shí)又不希望這個(gè)類是公共可用的,所以就產(chǎn)生了局部內(nèi)部類。

局部內(nèi)部類和成員內(nèi)部類一樣被編譯,只是它的作用域發(fā)生了改變,它只能在該方法和屬性中被使用,出了該方法和屬性就會失效

public class Outer {
  
  private String info = ",我是外部類的屬性";
  public void test(final String name){ // 方法中的參數(shù)要被內(nèi)部類訪問,必需加上final修飾
    // 定義于方法內(nèi)的類
    class Inner{
     public void print(){
       System.out.println(name+info); //使用外部類的屬性和方法中的參數(shù)
     }
    }
    new Inner().print();
  }
 
  public static void main(String[] args) {
    new Outer().test("張三");
    /*張三,我是外部類的屬性*/
  }
}

匿名內(nèi)部類

匿名內(nèi)部類:創(chuàng)建的對象沒有名字

匿名內(nèi)部類是不能加訪問修飾符

要使用匿名類,這個(gè)類是要先定義的

當(dāng)所在的方法的形參需要被內(nèi)部類里面使用時(shí),該形參必須為final修飾

(內(nèi)部類并不是直接調(diào)用方法傳進(jìn)來的參數(shù),而是內(nèi)部類將傳進(jìn)來的參數(shù)通過自己的構(gòu)造器備份到自己的內(nèi)部,外部類的方法修改)

public class Outer2 {
  
  public Inner2 getInner(final String name){
    return new Inner2(){
     private String info = ",我是內(nèi)部類屬性";
 
     @Override
     public void print() {
       System.out.println(name+info);
     }
     
     public void test(){
       System.out.println("我是接口中未定義的方法");
     }
    };
  }
 
  public static void main(String[] args) {
    Inner2 inner2 =new Outer2().getInner("張三");
    inner2.print();
    //inner2.test();  //不能調(diào)用接口中未定義的方法
  }
}
 
interface Inner2{
  void print();
}

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

使用static修飾的內(nèi)部類我們稱之為靜態(tài)內(nèi)部類,不過我們更喜歡稱之為嵌套內(nèi)部類

靜態(tài)內(nèi)部類與非靜態(tài)內(nèi)部類之間存在一個(gè)最大的區(qū)別,我們知道非靜態(tài)內(nèi)部類在編譯完成之后會隱式地保存著一個(gè)一引用,該引用是指向創(chuàng)建它的外部類,但是靜態(tài)內(nèi)部類卻沒有。沒有這個(gè)引用就意味著:

它的創(chuàng)建不需要依賴外部類

它不能使用任何外部類的非static成員變量和方法

public class Outer3 {
private String info1 = "我是外部類非靜態(tài)屬性";
private static String info2 = "我是外部類靜態(tài)屬性";
private String getInfo1(){

return "我是外部類非靜態(tài)方法";

}
private static String getInfo2(){

return "我是外部類靜態(tài)方法";

}

//靜態(tài)內(nèi)部類
public static class Inner3{

public void print(){
 //System.out.println(info1);
 System.out.println(info2);
 System.out.println(getInfo2());
}

}

public static void main(String[] args) {

new Inner3().print();  //不依賴于外部類,可以直接new 對象
/*我是外部類靜態(tài)屬性
我是外部類靜態(tài)方法*/

}
}

內(nèi)部繼承類
public class Test extends Outer4.inner{
 
  //Test 類必須存在外部類作為形參的構(gòu)造方法,否則編譯不通過
  Test(Outer4 out){
    out.super();
  }
}
 
class Outer4 {
  class inner{
    
  }
}
2-創(chuàng)建對象 new 構(gòu)造器(構(gòu)造方法)

構(gòu)造方法定義:

名字跟類名完全一致

沒有返回類型

支持重載

可以通過this調(diào)用當(dāng)前類已有其他構(gòu)造器

隱式構(gòu)造器:如果一個(gè)類沒有寫任何構(gòu)造器,編譯器就會生成默認(rèn)無參構(gòu)造器

3-給對象發(fā)送消息

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/69150.html

相關(guān)文章

  • Java識點(diǎn)總結(jié)(JDBC-連接步驟及CRUD)

    摘要:知識點(diǎn)總結(jié)連接步驟及知識點(diǎn)總結(jié)連接數(shù)據(jù)庫步驟依序關(guān)閉使用的對象連接操作加載對應(yīng)驅(qū)動建立連接連接對象內(nèi)部包含了對象,是一個(gè)遠(yuǎn)程連接。比較耗時(shí)這是對象管理的一個(gè)要點(diǎn)真正開發(fā)中,為了提高效率,都會使用連接池來管理連接對象張柏芝女張三執(zhí)行結(jié)果 Java知識點(diǎn)總結(jié)(JDBC-連接步驟及CRUD) @(Java知識點(diǎn)總結(jié))[Java, JDBC] 連接數(shù)據(jù)庫步驟 showImg(https://s...

    hankkin 評論0 收藏0
  • JAVA團(tuán)隊(duì)開發(fā)手冊 - 3. 開發(fā)流程

    摘要:開發(fā)流程對于一個(gè)項(xiàng)目,最大的問題就是如何拆解為任務(wù),分配到合適的人手里,并在有限的時(shí)間內(nèi)完成它。但是我們把整個(gè)項(xiàng)目進(jìn)行拆解的話,每個(gè)星期進(jìn)行統(tǒng)計(jì)分析,就可以對癥下藥,提高開發(fā)效率。 開發(fā)流程 對于一個(gè)項(xiàng)目,最大的問題就是如何拆解為任務(wù),分配到合適的人手里,并在有限的時(shí)間內(nèi)完成它。 就像做建筑工程一樣,其實(shí)做IT也是可以量化的,可能有的人砌磚砌得慢一些,有的人快一些。 但是我們把整個(gè)項(xiàng)目...

    魏憲會 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新的編程語言吧!

    摘要:入門,第一個(gè)這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運(yùn)行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    caspar 評論0 收藏0
  • SegmentFault 技術(shù)周刊 Vol.40 - 2018,來學(xué)習(xí)一門新的編程語言吧!

    摘要:入門,第一個(gè)這是一門很新的語言,年前后正式公布,算起來是比較年輕的編程語言了,更重要的是它是面向程序員的函數(shù)式編程語言,它的代碼運(yùn)行在之上。它通過編輯類工具,帶來了先進(jìn)的編輯體驗(yàn),增強(qiáng)了語言服務(wù)。 showImg(https://segmentfault.com/img/bV1xdq?w=900&h=385); 新的一年不知不覺已經(jīng)到來了,總結(jié)過去的 2017,相信小伙們一定有很多收獲...

    nihao 評論0 收藏0

發(fā)表評論

0條評論

syoya

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<