在乙個類中定義乙個類.
**分類:**成員內部類:在類的成員位置
區域性內部類:在類的區域性位置
例子:成員內部類
public
class
test1inner
}class
outer
}}
成員內部類–
概述:定義在類中方法之外的內部類.
私有成員內部類訪問(private):在自己所在的外部類中建立物件訪問.
static:
靜態成員內部類訪問:外部類名.內部類名 物件名 = new 外部類名.內部類名();
靜態成員內部類中的靜態方法:外部類名.內部類名.方法名();
public
class
test2innerclass
}class
outer
}//就在自己裡面,直接訪問就ok
public
void
method()
}
public
class
test3innerclass
}class
outer
public
static
void
method()
}}
區域性內部類:
區域性內部類是在方法中定義的類,所以外界是無法直接使用的,需要在方法內部建立物件並使用
該類可以直接訪問外部類的成員,也可以訪問方法內的區域性變數
作用: 方法內部的東西,在方法執行完畢後會自動消失.
所以,區域性內部類可以用於"臨時性的建立子類物件"
public
class
test4innerclass
}class
outer
} inner i =
newinner()
; i.
show()
;}}
匿名內部類:重要
本質上是乙個物件
概述:匿名內部類本質上是乙個特殊的區域性內部類(定義在方法內部)
前提:需要存在乙個介面或類
格式:
new 類名或者介面名();
範例:
new inter()
}
例子:
public
class
test5innerclass}.
show()
;
inter1 i =
newinter1()
@override
public
void
show2()
};i.
show1()
; i.
show2()
;}}inte***ce
inter
inte***ce
inter1
//class interimp implements inter
//}
方法的引數是乙個介面
lambda表示式:
**更少,關注點更加明確
例子:對匿名內部類進行了優化
public
class
test
});*/
/* //lambda表示式的寫法
//原則:能推斷就省略
playgame(() ->);
//一定是傳的是"game"介面的子類物件
//一定實現了play方法*/
playgame((
)->);
}//玩遊戲的方法
public
static
void
playgame
(game g)
}inte***ce
game
lambda表示式的格式:
格 式:
(形式參
數)
−>程式碼
塊格式:(形式引數)->
格式:(形式
引數)−
>**
塊lambda表示式本質上其實就是"匿名內部類"的簡化寫法.
(): 就是"重寫的那個方法"的形參.
{}: 就是"重寫的那個方法"的方法體.
形式引數:如果有多個引數,引數之間用逗號隔開
使用前提:"有乙個介面,介面中有且只有乙個抽象方法
例子:
public
class
test1})
;//lambda
usestringhandler
((string mes)
->);
}public
static
void
usestringhandler
(stringhandler stringhandler)
}inte***ce
stringhandler
省略規則:
1.引數型別可以省略,但是有多個引數的情況下,不能只省略乙個
2.如果引數有且只有乙個,那麼小括號可以省略
3.如果**塊的語句只有一條,可以省略大括號和分號,甚至是return
內部類,Lambda表示式
內部類定義格式 內部類的訪問特點 示例 內部類訪問特點 內部類可以直接訪問外部類的成員,包括私有 外部類要訪問內部類的成員,必須建立物件 public class outer public void method 外界建立成員內部類格式 私有成員內部類 靜態成員內部類 區域性內部類方式方式 示例 c...
匿名內部類與Lambda表示式
1.特徵上 沒有名字 2.實現上 既可以擴充套件類,也可以實現介面,但是不能兩者兼備 3.限制上 如果實現介面,只能實現乙個介面 4.功能上 簡化 符合優先使用類而不是介面的設計思想 舉例 description service介面 inte ce service description servi...
靜態內部類和Lambda表示式
1.靜態內部類 有名靜態內部類 static class heart 匿名靜態內部類 class father 外部類 public class outclass 2.用法 在非靜態方法建立非靜態內部類的物件,先建立外部類物件,是隱式,用this。public class body public v...