每日一學(11) (物件導向)匿名物件

2021-08-21 12:01:48 字數 4406 閱讀 8471

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

建立乙個普通物件:引用型別變數可以反覆使用

person p = new person();

p.eat();

建立乙個匿名物件:沒有引用變數,只能使一次

new person(); 呼叫:new person().eat();

int number=new scanner( system.in).nextint;

匿名物件的特點:

1、匿名方法可以直接使用,沒有變數名。

例如:new person().eat()  //eat方法被乙個沒有名字的person物件呼叫了。

2、匿名方法在沒有指定其引用變數時,只能使用一次

例如:new person().eat(); 建立乙個匿名物件,呼叫eat方法   

new person().eat(); 想再次呼叫eat方法,重新建立了乙個匿名物件

3、匿名方法可以作為方法接收的引數、方法返回值使用

引數傳遞

method(newperson());

publicstaticvoidmethod(person p)

方法返回值傳遞

person p1=method();

p1.eat();

publicstaticpersonmethod( )

什麼是內部類:將類寫在其他類的內部,可以寫在其他類的成員位置和區域性位置

注意事項:內部類編譯好了也是以.class檔案的形式存在的

分類:1、成員內部類      2、區域性內部類

注意事項:成員內部類也可以使用成員修飾符public、static。。。,也是個類,可以繼承,可以實現介面

就近訪問原則在內部類中同樣適用哦~(下面**省略測試類哦~)

public class outer }}

呼叫:1、內部類可以使用外部類的成員,包括私有屬性(兩個都是以同級的關係存在的)

2、外部類要使用內部類的成員,必須要先建立物件

class 外部類

}

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

物件.內部類方法();

class body }}

訪問內部類:

public static void main(string args) }}

在外部類方法中,建立內部類物件,進行訪問

定義類

class party

}//建立內部類物件,呼叫puff方法

new ball().puff();//這條**等同於  ball  in=new ball(); in.puff();}

}訪問內部類

public static void main(string args)

作用:匿名內部類是建立某個型別子類物件的快捷方式(減少**)

使用前提:繼承或實現乙個介面

定義匿名內部類有兩個含義:1、臨時定義某乙個型別的子類。2、定義後即刻建立剛剛定義的這個子類的物件

格式:new 父類或介面();

**演示:

class  ***  implements  smoking

}***  x=new ***();

x.smoking();

測試類

new smoking()

}.smoking();

兩個**是等價的,測試類中的**如果沒有「.smoking」**將輸出為空

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

運用多型的方式,實現匿名內部類:

public static abstract animal

public  void  sleep()

};a.eat();

a.sleep();

}輸出的結果為:在吃飯

在睡覺

許可權修飾符: public : 公共的     protected: 受保護的    預設    private : 私有的

public  protected   預設的   private

在當前類中       y       y           y       y

同一包中的其他類  y       y           y

不同包中的子類    y       y

不同包中的其他類  y

歸納一下:在日常開發過程中,編寫的類、方法、成員變數的訪問

要想僅能在本類中訪問使用private修飾;

要想本包中的類都可以訪問不加修飾符即可;

要想本包中的類與其他包中的子類可以訪問使用protected修飾

受保護的許可權,只能是子類的裡面!!!呼叫父類的受保護成員要想所有包中的所有類都可以訪問使用public修飾。

注意:如果類用public修飾,則類名必須與檔名相同。乙個檔案中只能有乙個public修飾的類。

分類:1、區域性**塊 2、構造**塊(構造**塊、靜態**塊)

區域性**塊(限制生命週期或者是作用域):區域性**塊是定義在方法或語句中

特點:

以」{}」劃定的**區域,此時只需要關注作用域的不同即可

方法和類都是以**塊的方式劃定邊界的

class demo

int x = 99;

system.out.println("**塊之外" + x);}}

結果:

普通**塊1

**塊之外99

構造**塊:構造**塊是定義在類中成員位置的**塊

特點:

優先於構造方法執行,構造**塊用於執行所有物件均需要的初始化動作

每建立乙個物件均會執行一次構造**塊。

public class person

person()

person(int age)

}class persondemo

構造**塊優先被執行

靜態**塊:靜態**塊是定義在成員位置,使用static修飾的**塊。

特點:

它優先於主方法執行、優先於構造**塊執行,當以任意形式第一次使用到該類時執行。

該類不管建立多少物件,靜態**塊只執行一次。

可用於給靜態變數賦值,用來給類進行初始化。

public class person }

靜態**塊被優先執行

注意:(非常重要)(靜態**塊》構造**塊》構造方法)

靜態**塊,只執行一次

構造**塊,new一次,執行一次,優先於構造方法

構造方法,new一次,就執行一次

物件導向2 匿名物件

概念 沒有名字的物件,沒有被變數引用指向的物件空間。語法 new 類名 public class nimingdemo public class demo 自定義類作為引數型別使用 public class nimingdemo public class demo public static voi...

物件導向思想,匿名物件,封裝

概念 基於面向過程,將過程進行物件的封裝。特點 物件導向是一種更符合思考習慣的思想 從過程的執行者,轉換成物件的指揮者 將複雜問題簡單化 類 用於描述事物 物件 類中事物具體的個體 概念 沒有名字的物件,是物件的簡化定義方式 匿名物件可以作為實際引數進行傳遞 如果物件對方法只進行一次呼叫,可以簡化為...

物件導向1 1

要呼叫什麼類裡的方法,就要建立什麼類的物件,再通過物件去呼叫。public class test 建立當前類的物件 test test newtest test.arrays std system.out.println test.statestd std,3 system.out.println ...