Java 匿名对象、内部类
一、匿名對象
1、概念
匿名對象是指創(chuàng)建對象時,只有創(chuàng)建對象的語句,卻沒有把對象地址值賦值給某個變量。
public class Person{public void eat(){System.out.println();} }Person p = new Person();//創(chuàng)建一個普通對象 new Person(); //創(chuàng)建一個匿名對象?2、?匿名對象的特點
l?創(chuàng)建匿名對象直接使用,沒有變量名。
new Person().eat() //eat方法被一個沒有名字的Person對象調(diào)用了。l?匿名對象在沒有指定其引用變量時,只能使用一次。
new Person().eat(); //創(chuàng)建一個匿名對象,調(diào)用eat方法 new Person().eat(); //想再次調(diào)用eat方法,重新創(chuàng)建了一個匿名對象匿名對象可以作為方法接收的參數(shù)、方法返回值使用
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) {//調(diào)用getPerson方法,得到一個Person對象Person person = Demo.getPerson(); //調(diào)用method方法 Demo.method(person);//匿名對象作為方法接收的參數(shù)Demo.method(new Person());} }二、內(nèi)部類
1、內(nèi)部類概念
將類寫在其他類的內(nèi)部,可以寫在其他類的成員位置和局部位置,這時寫在其他類內(nèi)部的類就稱為內(nèi)部類。其他類也稱為外部類。
2、成員內(nèi)部類
成員內(nèi)部類,定義在外部類中的成員位置。與類中的成員變量相似,可通過外部類對象進行訪問
格式:
class 外部類 { 修飾符 class 內(nèi)部類 {//其他代碼 } }訪問方式:
外部類名.內(nèi)部類名 變量名 = new 外部類名().new 內(nèi)部類名();例:創(chuàng)建內(nèi)部類
class Body {//外部類,身體private boolean life= true; //生命狀態(tài)public class Heart { //內(nèi)部類,心臟public void jump() {System.out.println("心臟噗通噗通的跳")System.out.println("生命狀態(tài)" + life); //訪問外部類成員變量 }} }訪問內(nèi)部類
public static void main(String[] args) {//創(chuàng)建內(nèi)部類對象Body.Heart bh = new Body().new Heart();//調(diào)用內(nèi)部類中的方法 bh.jump(); }3、局部內(nèi)部類
局部內(nèi)部類,定義在外部類方法中的局部位置。與訪問方法中的局部變量相似,可通過調(diào)用方法進行訪問
定義內(nèi)部類:
class 外部類 { 修飾符 返回值類型 方法名(參數(shù)) {class 內(nèi)部類 {//其他代碼 }} }訪問方式:
在外部類方法中,創(chuàng)建內(nèi)部類對象,進行訪問例:
定義類:
class Party {//外部類,聚會public void puffBall(){// 吹氣球方法class Ball {// 內(nèi)部類,氣球public void puff(){System.out.println("氣球膨脹了");}}//創(chuàng)建內(nèi)部類對象,調(diào)用puff方法new Ball().puff();} }訪問內(nèi)部類:
public static void main(String[] args) {//創(chuàng)建外部類對象Party p = new Party();//調(diào)用外部類中的puffBall方法 p.puffBall(); }三、?內(nèi)部類的實際使用——匿名內(nèi)部類
1、?匿名內(nèi)部類概念
?最常用到的內(nèi)部類就是匿名內(nèi)部類,它是局部內(nèi)部類的一種。
定義的匿名內(nèi)部類有兩個含義:
- 臨時定義某一指定類型的子類
- 定義后即刻創(chuàng)建剛剛定義的這個子類的對象
2、定義匿名內(nèi)部類的作用與格式
作用:匿名內(nèi)部類是創(chuàng)建某個類型子類對象的快捷方式。
格式:
new 父類或接口(){//進行方法重寫 };例:
//已經(jīng)存在的父類: public abstract class Person{public abstract void eat(); } //定義并創(chuàng)建該父類的子類對象,并用多態(tài)的方式賦值給父類引用變量 Person p = new Person(){public void eat() {System.out.println(“我吃了”); } }; //調(diào)用eat方p.eat(); 法使用匿名對象的方式,將定義子類與創(chuàng)建子類對象兩個步驟由一個格式一次完成,。雖然是兩個步驟,但是兩個步驟是連在一起完成的。
匿名內(nèi)部類如果不定義變量引用,則也是匿名對象。代碼如下
new Person(){public void eat() {System.out.println(“我吃了”); } }.eat();?
?
轉(zhuǎn)載于:https://www.cnblogs.com/dk2557/p/9439838.html
總結(jié)
以上是生活随笔為你收集整理的Java 匿名对象、内部类的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (第六场)Singing Contest
- 下一篇: 表格标签