成员内部类用法
/**
* 成员内部类
*
* @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() {
@Override
public void hello() {
System.out.println("你好");
}
}.hello();
}
}
interface UserService{
void hello();
}
lambda的底层实现就是匿名内部类。