java中的内部类

java中的内部类

1.定义

  1. 内部类是一个定义在另一个类中的类
  2. 内部类可以把一些数据统一的隐藏起来,从而增强面向对象的封装性

2.分类

  1. 非静态成员式的内部类

    1. 非静态成员式内部类可以访问该类定义所在的作用域中的所有数据,方法,包括私有数据
    2. 非静态成员式内部类不能声明static成员
    3. 非静态成员式内部类不能在该类定义静态方法中直接使用
    4. 访问非静态成员式内部类:外部类名.内部类 变量 = new 外部类名().new 内部类名()
    5. 非静态成员式内部类可以实现多继承
  2. 局部内部类

    1. 局部内部类定义在代码块、方法体内
    2. 局部内部类不能使用,private,public,protected,static修饰
    3. 局部内部类作用域仅限于当前方法中
    4. 局部内部类和非静态成员式内部类一样,不能拥有静态成员
    5. 局部内部类访问的局部变量必须是final修饰的,java8以后会自动添加上隐藏式的final
  3. 匿名内部类

    1. 匿名局部内部类
    public abstract class Person {
        public abstract void sleep();
    }
    
    public class Student extends Person {
    
        @Override
        public void sleep() {
            System.out.println("学生睡觉");
        }
    }
    
    public class Test {
        public static void main(String[] args) {
            Person p1 = new Person() {
    
                @Override
                public void sleep() {
                    System.out.println("学生睡觉");
                }
            };
    
            p1.sleep();
    
            Person p2 = new Student();
            p2.sleep();
        }
    }
    

    在上面的代码中p1对象和p2对象一样,但是p1对象只能使用一次

    1. 匿名内部类使用前提,必须继承一个父类,或者去实现一个接口
  4. 静态成员式内部类

    1. 静态内部类,场景:如果一个类只想把另一个类隐藏起来,而不想引用外部类对象,类似于工具类
    2. 访问静态内部类的方法:外部类名.内部类名 = new 外部类名.内部类名()
    3. 静态成员式内部类创建实例对象的时候不必创建外部类对象
    4. 静态成员式内部类可以直接访问外部类的静态成员,不能直接访问外部类的非静态成员
    5. 外部类可以通过完整的类名直接访问静态内部类的静态成员

总结

内部类的出现是为了减少一个类的使用,即:如果该类只会使用一次,并且他的父类或者要实现的接口,那么就可以方便的使用内部类,这样可以让代码的结构更加紧凑

posted @   ning12  阅读(9)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示