class NestClass{
static class StaticInner{
void fun(){
System.out.println( "static class StaticInner 原始的方法");
}
}
class Inner{
void fun(){
System.out.println( "none static class Inner 原始的方法");
}
}
Inner i;
public static void main(String[] args){
//==============================================================
NestClass.StaticInner n0=new NestClass.StaticInner();
n0.fun();
//==============================================================
NestClass.StaticInner n1=new NestClass.StaticInner(){//匿名類別開始
void fun(){
System.out.println( "static class StaticInner 被覆寫的方法");
}
};//匿名類別結束
n1.fun();
//==============================================================
NestClass n2=new NestClass();
n2.i=n2.new Inner();
n2.i.fun();
//==============================================================
NestClass n3=new NestClass();
n3.i=n3.new Inner(){//匿名類別開始
void fun(){
System.out.println( "none static class Inner 被覆寫的方法");
}
};//匿名類別結束
n3.i.fun();
}
}
//================================================
class A{}
class NestClass2{
public static void main(String[] args){
A a=new A(int I){};//錯誤建立新的建構子
}
}
/*
None static nest class 都要同時使用外部及內部class實體
使用範例:外部實體.內部實體.成員
匿名類別不能新增建構子
匿名類別在Java8.0前只能使用final 外部區域變數
Java8.0(含)後,匿名類別所參照到外部區域變數,會變為隱性final
*/
沒有留言:
張貼留言