内部类
内部类
一个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();
}
结果

浙公网安备 33010602011771号