Java__内部类

权限修饰符:

  • public: 公共的

  • protected: 受保护的

  • (default): 默认不写

  • private:私有的

.publicprotected(default)private
同一类中
同一包下不同类中 ×
不同包的子类中 × ×
不同包的非子类中 × × ×

成员变量:使用private,隐藏细节

构造方法: 使用public,方便创建对象

成员方法: 建议使用public,方便调用。

备注:【默认级别】,是不写的

内部类:

  将一个类A定义在另一个类B里面,里面的类A就称为**内部类**,类B则称为**外部类**。

修饰符  class 外部类名称 {
    修饰符 class 内部类名称{
        //......
    }
    //.....
}

  内部类可以直接访问外部类的成员,包括私有成员。

  外部类要访问内部类的成员,必须建立内部类的对象

外部类类名.内部类类名  对象名    =   new   外部类类名().new 内部类类名();
//创建内部类对象

匿名内部类:

  带着具体实现  父类或者父接口的  匿名的子类对象

前提:

  匿名内部类必须【继承一个父类】或者【实现一个接口】,伴随着重写父类或者父接口当中的抽象方法。

new 父类名或者父接口名 {
    // 方法的重写
    @Override
    public void method(){
        // 重写的方法体内容。。。
    }
};

传递参数:

public interface Animal {
    //
    public abstract void eat();
}
// 定义一个启动类
public class DemoAnonymous {
    // 定义成员方法
    public static void showEat(Animal animal){
        animal.eat();
    }
    
    public static void main(String[] args) {
        // 采用匿名内部类的方式来写
        // 多态写法  
        // 等号左边:接口
        // 等号右边:本质是Animal接口的子类对象
        Animal animal = new Animal() {
              @Override
            public void eat(){
                System.out.println("猫吃鱼");
            }
        };
        showEat(animal); // 猫吃鱼  
        // 简化一下
        showEat(new Animal(){
            @Override
            public void eat(){
                System.out.println("猫吃鱼");
            }
        });
    }   
}
原文地址:https://www.cnblogs.com/9080dlb/p/14050960.html