成员内部类用法
/*** 成员内部类** @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的底层实现就是匿名内部类。