JAVA-基礎-匿名對象-內部類

來源:互聯網
上載者:User

標籤:stat   rac   引用   其他   static   捷徑   通過   類的成員   span   

  匿名對象的概念

匿名對象是指建立對象時,只有建立對象的語句,卻沒有把對象地址值賦值給某個變數。

public class Person{    public void eat(){        System.out.println();}}

建立一個普通對象

Person p = new Person();

建立一個匿名對象

new Person();

  匿名對象的特點:

l  建立匿名對象直接使用,沒有變數名。

new Person().eat()  //eat方法被一個沒有名字的Person對象調用了。

l  匿名對象在沒有指定其引用變數時,只能使用一次。

new Person().eat(); 建立一個匿名對象,調用eat方法

new Person().eat(); 想再次調用eat方法,重新建立了一個匿名對象

l  匿名對象可以作為方法接收的參數、方法傳回值使用

class Demo {    public static Person getPerson(){        //普通方式        //Person p = new Person();            //return p;                //匿名對象作為方法傳回值        return new Person();     }        public static void method(Person p){}}class Test {    public static void main(String[] args) {        //調用getPerson方法,得到一個Person對象        Person person = Demo.getPerson();                //調用method方法        Demo.method(person);        //匿名對象作為方法接收的參數        Demo.method(new Person());    }}
  內部類

將類寫在其他類的內部,可以寫在其他類的成員位置和局部位置,這時寫在其他類內部的類就稱為內部類。其他類也稱為外部類。

在描述事物時,若一個事物內部還包含其他可能包含的事物,比如在描述汽車時,汽車中還包含這發動機,這時發動機就可以使用內部類來描述。

l  內部類的分類

內部類分為成員內部類與局部內部類。

我們定義內部類時,就是一個正常定義類的過程,同樣包含各種修飾符、繼承與實現關係等。在內部類中可以直接存取外部類的所有成員。

  成員內部類

成員內部類,定義在外部類中的成員位置。與類中的成員變數相似,可通過外部類對象進行訪問

l  定義格式

class 外部類 {

    修飾符 class 內部類 {

        //其他代碼

}

}

l  訪問方式

外部類名.內部類名 變數名 = new 外部類名().new 內部類名();

l  成員內部類代碼示範

 

class Body {//外部類,身體    private boolean life= true; //生命狀態     public class Heart { //內部類,心臟    public void jump() {         System.out.println("心臟噗通噗通的跳")            System.out.println("生命狀態" + life); //訪問外部類成員變數}}}

 

訪問內部類

public static void main(String[] args) {    //建立內部類對象    Body.Heart bh = new Body().new Heart();    //調用內部類中的方法    bh.jump();}
  局部內部類

局部內部類,定義在外部類方法中的局部位置。與存取方法中的局部變數相似,可通過調用方法進行訪問

l  定義格式

class 外部類 {

    修飾符 傳回值類型 方法名(參數) {

class 內部類 {

//其他代碼

}

}

}

l  訪問方式

在外部類方法中,建立內部類對象,進行訪問

l  局部內部類代碼示範

class Party {//外部類,聚會    public void puffBall(){// 吹氣球方法        class Ball {// 內部類,氣球              public void puff(){     System.out.println("氣球膨脹了");}}//建立內部類對象,調用puff方法new Ball().puff();}}訪問內部類public static void main(String[] args) {    //建立外部類對象    Party p = new Party();    //調用外部類中的puffBall方法    p.puffBall();}

 

 內部類的實際使用——匿名內部類

臨時定義某一指定類型的子類

定義後即刻建立剛剛定義的這個子類的對象

作用:匿名內部類是建立某個類型子類對象的捷徑。

格式:

new 父類或介面(){

    //進行方法重寫

};

代碼示範:

//已經存在的父類:public abstract class Person{    public abstract void eat();}//定義並建立該父類的子類對象,並用多態的方式賦值給父類引用變數Person  p = new Person(){    public void eat() {        System.out.println(“我吃了”);}};//調用eat方法p.eat();

 

使用匿名對象的方式,將定義子類與建立子類對象兩個步驟由一個格式一次完成,。雖然是兩個步驟,但是兩個步驟是連在一起完成的。

匿名內部類如果不定義變數引用,則也是匿名對象

 

new Person(){

 

    public void eat() {

 

        System.out.println(“我吃了”);

 

}

 

}.eat();

 

 

 

JAVA-基礎-匿名對象-內部類

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.