成員內部類用法
/*** 成員內部類** @author Admin*/
public class OuterClass {public void say(){System.out.println("這是類的方法");}class InnerClass{public void say(){System.out.println("這是成員內部類的方法");}}public static void main(String[] args) {// 聲明對象OuterClass outerClass = new OuterClass();// 調用其方法outerClass.say();// 聲明成員內部類對象需要借助其所在類的對象InnerClass innerClass = outerClass.new InnerClass();// 調用其方法innerClass.say();}
}
值得一提的是成員內部類可以獲得外部類的私有屬性?。
靜態成員內部類用法
/*** 靜態成員內部類** @author Admin*/
public class OuterClass {public void say(){System.out.println("這是類的方法");}static class InnerClass{public void say(){System.out.println("這是靜態成員內部類的方法");}}public static void main(String[] args) {// 聲明對象OuterClass outerClass = new OuterClass();// 調用其方法outerClass.say();// 聲明靜態成員內部類不對象需要借助其所在類的對象InnerClass innerClass = new InnerClass();// 調用其方法innerClass.say();}
}
靜態成員內部類不可以獲得外部類的私有屬性,因為靜態是不依賴對象的?。
局部內部類用法
/*** 成員內部類** @author Admin*/
public class OuterClass {public void say(){System.out.println("這是類的方法");}public static void main(String[] args) {// 聲明對象OuterClass outerClass = new OuterClass();// 調用其方法outerClass.say();// 聲明局部內部類InnerClass innerClass = new InnerClass();// 調用其方法innerClass.say();}
}/*** 局部內部類 一個java文件中,與文件名相同的類才能被public修飾** @author Admin*/
class InnerClass{public void say(){System.out.println("局部內部類的方法");}
}
匿名內部類用法
/*** 成員內部類** @author Admin*/
public class OuterClass {public static void main(String[] args) {// 匿名內部類new UserService() {@Overridepublic void hello() {System.out.println("你好");}}.hello();}
}interface UserService{void hello();
}
lambda的底層實現就是匿名內部類。