Java 匿名对象、内部类
生活随笔
收集整理的這篇文章主要介紹了
Java 匿名对象、内部类
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、匿名對象
1、概念
匿名對象是指創建對象時,只有創建對象的語句,卻沒有把對象地址值賦值給某個變量。
public class Person{public void eat(){System.out.println();} }Person p = new Person();//創建一個普通對象 new Person(); //創建一個匿名對象?2、?匿名對象的特點
l?創建匿名對象直接使用,沒有變量名。
new Person().eat() //eat方法被一個沒有名字的Person對象調用了。l?匿名對象在沒有指定其引用變量時,只能使用一次。
new Person().eat(); //創建一個匿名對象,調用eat方法 new Person().eat(); //想再次調用eat方法,重新創建了一個匿名對象匿名對象可以作為方法接收的參數、方法返回值使用
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());} }二、內部類
1、內部類概念
將類寫在其他類的內部,可以寫在其他類的成員位置和局部位置,這時寫在其他類內部的類就稱為內部類。其他類也稱為外部類。
2、成員內部類
成員內部類,定義在外部類中的成員位置。與類中的成員變量相似,可通過外部類對象進行訪問
格式:
class 外部類 { 修飾符 class 內部類 {//其他代碼 } }訪問方式:
外部類名.內部類名 變量名 = new 外部類名().new 內部類名();例:創建內部類
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(); }3、局部內部類
局部內部類,定義在外部類方法中的局部位置。與訪問方法中的局部變量相似,可通過調用方法進行訪問
定義內部類:
class 外部類 { 修飾符 返回值類型 方法名(參數) {class 內部類 {//其他代碼 }} }訪問方式:
在外部類方法中,創建內部類對象,進行訪問例:
定義類:
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(); }三、?內部類的實際使用——匿名內部類
1、?匿名內部類概念
?最常用到的內部類就是匿名內部類,它是局部內部類的一種。
定義的匿名內部類有兩個含義:
- 臨時定義某一指定類型的子類
- 定義后即刻創建剛剛定義的這個子類的對象
2、定義匿名內部類的作用與格式
作用:匿名內部類是創建某個類型子類對象的快捷方式。
格式:
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();?
?
轉載于:https://www.cnblogs.com/dk2557/p/9439838.html
總結
以上是生活随笔為你收集整理的Java 匿名对象、内部类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (第六场)Singing Contest
- 下一篇: Java小入坑