內(nèi)部類
在類的內(nèi)部在定義一個(gè)類
- 成員內(nèi)部類
- 靜態(tài)內(nèi)部類
- 局部?jī)?nèi)部類
- 匿名內(nèi)部類
創(chuàng)建內(nèi)部類的對(duì)象:
public static void main(String[] args) {
//先創(chuàng)建外部類對(duì)象
outer outer = new outer();
//通過(guò)外部類對(duì)象new內(nèi)部類對(duì)象
outer.Inner inner = outer.new Inner();
inner.in();
}
public class outer {
private int id=999;
public void out(){
System.out.println("這是外部類的方法");
}
//重點(diǎn):內(nèi)部類可以調(diào)用外部類的屬性和方法,但這和繼承不一樣哦,繼承是直接將屬性方法給了子類,而這里需要調(diào)用得到
public class Inner{
public void in(){
System.out.println("這是內(nèi)部類的方法");
System.out.println(id);//輸出外部類的屬性
out();//直接調(diào)用外部類的方法
}
}
}
- 一個(gè)Java文件只能有一個(gè)public class,但可以有多個(gè)class文件
這個(gè)A類也叫內(nèi)部類:
public class outer {
}
class A{
}
B類為局部?jī)?nèi)部類:
public class outer {
public void A(){
class B{
}
}
}
匿名內(nèi)部類(直接new一個(gè)對(duì)象,沒有返回名字):
public class outer {
public static void main(String[] args) {
//沒有名字,沒有將實(shí)例保存到變量中
new Apple().eat();
//用匿名內(nèi)部類實(shí)現(xiàn)了接口
new UserService(){
@Override
public void a() {
}
};
}
}
class Apple{
public void eat(){
System.out.println("吃");
}
}
interface UserService{
void a();
}
這些內(nèi)部類,現(xiàn)在了解這些就夠了,之后遇到在慢慢看
|