内部类

内部类

一个java文件文件名和public相同即只有一个public类,可以有多个外部类,

外部类:与public类同级别的类

多个内部类:实例化内部类是通过外部类实例化再 外部类点内部类类型+名=外部类点new+构造 来实现实例化,再空间作用下自己的外部类的内部类可以获得外部类的私有属性;

类也可以在方法内称局部内部类:定义在方法的内部

匿名类:没有名字的类,使用时直接new,不赋值给变量(没名字);

package com.wzh.Java;
//外部类之一public
public class A {
    //私有属性
    private int a=10;
//外部类,public去调用
    public void  waik(){
        B b=new B();
        b.drink();
    }
    //内部类
   public class C {
        public void junp(){
            //内部类可以直接使用其外部类的私有属性
            System.out.println("这是内部类的跳"+a);
        }
    }
    //局部内部类,范围很小很少用
    public void eat(){
         class  D{
             int f=10;
        }
      int g=   new D().f;
        System.out.println(g);
    }
}
//外部类,与public同级别
class B {
    public void  drink(){
        System.out.println("这是外部类");
    }
}

测试上面代码和匿名类

package com.wzh.Text;
import com.wzh.Java.A;
public class Text {
    public static void main(String[] args) {
        //public类
        A a = new A();
        a.waik();
        //局部内部类
        a.eat();
        //实例化内部类,外部类点new
        A.C c = a.new C();
        c.junp();
        //匿名类,不赋值给变量,可以应用到接口
        //E e=new E();
        new E().haHa();
        //new的是一个类,不是new接口,实现接口,返回接口
         F aa=new F(){
            @Override//重写
            public void AA() {
            }
        };
    }
}
class E {
    public void haHa() {
        System.out.println("哈哈");
    }
}

interface F{
    void AA();
}

结果

posted on 2021-02-26 20:07  码路行  阅读(52)  评论(0)    收藏  举报

导航