外部類.this.*
訪問外部類同名成員。外部類.內部類 name=new 外部類().內部類()
實例化對象。public class InnerClass1 { public int a; protected double b; char c; private String d; InnerClass1(int a){ this.a=a; } class inner{ int a; inner(int a){ this.a=a; } private void A(){ System.out.println(a); System.out.println(this.a); System.out.println(InnerClass1.this.a); } public void B(){ System.out.println(b); } } public static void main(String[] args) { InnerClass1.inner inner=new InnerClass1(10).new inner(5); inner.A(); inner.B(); } }
/** * 局部內部類 */ public class InnerClass2 { final static int a=5; public static void main(String[] args) { class inner{ int sum(int n){ int ans=0; for(int i=1;i<=n;i++){ ans+=i; } return ans+a; } } System.out.println(new inner().sum(5)); System.out.println(new inner().sum(15)); } }
外部類.內部類 name=new 外部類.內部類()
實例化對象,不須要建立外部類實例。/** * 靜態內部類 */ public class InnerClass3 { int a=5; static int b=10; static class inner3{ int a=15; static int b=20; void A(){ System.out.println(a); // System.out.println(InnerClass3.a); } static void B(){ System.out.println(b); System.out.println(InnerClass3.b); } } public static void main(String[] args) { InnerClass3.inner3 inner3=new InnerClass3.inner3(); inner3.A(); InnerClass3.inner3.B(); } }
接口 name=new 接口(){[重寫接口全部函數]}
。public class CallBackUser{ public static void main(String[] args) { int b=5; // b=5; CallBackSystem callBackServer=new CallBackSystem(); callBackServer.onBtnClick("CallBack", new CallBack() { @Override public void fun(String name) { System.out.println("Hello "+name+" "+b); } }); } }
考慮一個問題,如何讓系統調用你寫的一個方法? 好比點擊某個按鈕就執行你寫的方法。java
在Java中實現一個簡單的回調功能須要如下幾步:ide
public interface CallBack { void fun(String name); }
public class CallBackSystem { public void onBtnClick(String name,CallBack callBack){ System.out.println("點擊按鈕後系統調用你寫的方法"); callBack.fun(name); } }
public class CallBackUser{ public static void main(String[] args) { CallBackSystem callBackServer=new CallBackSystem(); callBackServer.onBtnClick("CallBack", new CallBack() { @Override public void fun(String name) { System.out.println("Hello "+name); } }); } }