内部类
- 一个类定义在另外一个类里面或者一个方法里面,这样的类叫做内部类
成员内部类
| package test.InnerClass; |
| |
| class CSer { |
| String weapon; |
| private int hp; |
| static int money = 800; |
| |
| public CSer() { |
| |
| new Weapon().print(); |
| } |
| |
| class Weapon { |
| int damage = 80; |
| |
| public void print() { |
| |
| System.out.println(hp); |
| System.out.println(money); |
| } |
| } |
| } |
| |
| public class Test { |
| public static void main(String[] args) { |
| |
| CSer cSer = new CSer(); |
| CSer.Weapon weapon = cSer.new Weapon(); |
| weapon.print(); |
| } |
| } |
局部内部类
| class Weapon { |
| public Weapon print() { |
| |
| class AWP extends Weapon { |
| private int damage = 80; |
| } |
| return new AWP(); |
| } |
| } |
- 局部内部类就好像一个局部变量一样,它是不能被权限修饰符修饰的,比如说 public、protected、private 和 static 等。
匿名内部类
| public class ThreadDemo { |
| public static void main(String[] args) { |
| Thread t = new Thread(new Runnable() { |
| @Override |
| public void run() { |
| System.out.println(Thread.currentThread().getName()); |
| } |
| }); |
| t.start(); |
| } |
| } |
- 匿名内部类的作用主要是用来继承其他类或者实现接口,并不需要增加额外的方法,方便对继承的方法进行实现或者重写。
- 匿名内部类是唯一一种没有构造方法的类。
静态内部类
| class CSer { |
| String weapon; |
| private int hp; |
| static int money = 800; |
| |
| public CSer() { |
| new Weapon().print(); |
| } |
| |
| |
| static class Weapon { |
| int damage = 80; |
| |
| public void print() { |
| |
| System.out.println(money); |
| } |
| } |
| } |
内部类特性
- 1、内部类可以使用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独立。
- 2、在单个外部类中,可以让多个内部类以不同的方式实现同一个接口,或者继承同一个类。
- 3、创建内部类对象的时刻并不依赖于外部类对象的创建。
- 4、内部类并没有令人迷惑的“is-a”关系,他就是一个独立的实体。
- 5、内部类提供了更好的封装,除了该外围类,其他类都不能访问。
本文作者:n1ce2cv
本文链接:https://www.cnblogs.com/sprinining/p/18300992
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步