匿名物件是指建立物件時,只有建立物件的語句,卻沒有把物件位址值賦值給某個變數。
建立乙個普通物件:引用型別變數可以反覆使用
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方法3、匿名方法可以作為方法接收的引數、方法返回值使用new person().eat(); 想再次呼叫eat方法,重新建立了乙個匿名物件
引數傳遞什麼是內部類:將類寫在其他類的內部,可以寫在其他類的成員位置和區域性位置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 : 公共的 protected: 受保護的 預設 private : 私有的public void sleep()
};a.eat();
a.sleep();
}輸出的結果為:在吃飯
在睡覺
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靜態**塊:靜態**塊是定義在成員位置,使用static修飾的**塊。person()
person(int age)
}class persondemo
構造**塊優先被執行
特點:
它優先於主方法執行、優先於構造**塊執行,當以任意形式第一次使用到該類時執行。
該類不管建立多少物件,靜態**塊只執行一次。
可用於給靜態變數賦值,用來給類進行初始化。
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 ...