内部类

内部类

概念:内部类与成员变量与成员方法相似,在类中方法外的是成员内部类,在方法中的是局部内部类。

特点:

  1. 内部类可以直接使用类中的成员变量,即使是成员变量
  2. 类如果想使用内部类的变量方法,需要先创建内部类的变量

成员内部类

​ 在成员位值的是成员内部类。

public class InnerClass {
    private int a=10;

    public static void main(String[] args) {
        InnerClass innerClass=new InnerClass();
        innerClass.print();

    }
    public void print(){
        A a=new A();
        a.method();
    }
     class A{
        public void method(){
            System.out.println(a);
        }
    }
}

局部内部类

​ 在局部位置的就是局部内部类,匿名内部类,也是局部内部类


public class InnerClass2 {
    private int a=10;
    public void method(){
        class B{
            public void inmethod(){
                System.out.println(a);
            }
        }
        B b=new B();
        b.inmethod();
    }

    public static void main(String[] args) {
        InnerClass2 innerClass2=new InnerClass2();
        innerClass2.method();
    }

匿名内部类

​ 没有名字的内部类,匿名内部类也是局部内部类

​ 注意匿名内部类与匿名对象的区别,匿名对象是没有名字的对象,既没有变量指向的变量

public interface TestNoNameClass {
    void eat();
}
//这里定义一个接口
public class NoNameClass {
    //类中写了个方法,方法参数是定义的接口
    public void goeat(TestNoNameClass testNoNameClass){
        testNoNameClass.eat();
    }

    public static void main(String[] args) {
        NoNameClass noNameClass=new NoNameClass();
        //这里TestNoNameClass是一个接口,为什么还可以new对象呢,实际上这里是出现了一个实现了TestNoNameClass接口的类,
        // 这个类没有名字,仅使用一次,所以称为匿名内部类
        noNameClass.goeat(new TestNoNameClass() {
            @Override
            public void eat() {
                System.out.println("快点去吃饭");
            }
        });
    }
}
posted @ 2023-02-15 19:57  杨远  阅读(12)  评论(0编辑  收藏  举报