静态内部类 与 匿名内部类
静态内部类
被static修饰的成员内部类为静态内部类
语法格式:
外部类 . 内部类 变量名称 = new 外部类 . 内部类();
public class OOP3 { public static void main(String[] args) { //获取外部类对象 Outer o = new Outer(); o.show(); Outer.Inner inner = new Outer.Inner(); inner.info1(); inner.info2(); } } class Outer{ public static String name = "张三"; public static void show(){ System.out.println(name); } //静态内部类 static class Inner{ public static String name ="李四"; public int age = 20; public void info1(){ System.out.println(age); } public void info2(){ System.out.println("内部类"+name); } } }
静态内部类相比于成员内部类来说简化了方法方式,好处同样的提高了类型的安全性.
静态内部类特点:
>本身还是一个class,所以内部成员和普通类没区别
>静态内部类不能获取外部类中的非静态属性和方法
>在外部类中要获取内部类对象直接实例化即可
class Outer{ public static String name = "张三"; public static void show(){ System.out.println(name); } //静态内部类 static class Inner{ public static String name ="李四"; public int age = 20; public void info1(){ String name ="aaa"; System.out.println(age); System.out.println("局部变量:"+name); System.out.println("成员变量:"+this.name); System.out.println("外部变量:"+Outer.name); }
}
}
Outer.Inner inner = new Outer.Inner();
inner.info1();
如果要获取静态内部类中的静态方法或者属性的话可以使用以下方式获取
外部类名称 . 内部类名称 . 静态方法();
外部类名称 . 内部类名称 . 静态变量;
匿名内部类
没有名称的内部类为匿名内部类
(一个内部类在整个操作中只使用看一次的话,就可以使用匿名内部类)
没使用匿名
使用匿名:
public class OOP4 { public static void main(String[] args) { new A().fun2(); } } interface Persons{ void sleep(); } class A{ void fun1(Persons p){ p.sleep(); }
//使用匿名 void fun2(){ this.fun1(new Persons() { @Override public void sleep() { System.out.println("ADahfjd"); } }); } }
匿名内部类为了方便我们编写程序设计的一种机制,有时候内部类创建一个对象就可以了,这时候匿名内部类就比较合适,匿名内部类一般都时候和接口及轴抽象关联的
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)