匿名类型 java_Java 中的 匿名类

什么是内部类?

在一个类中定义另一个类,这样定义的类称为内部类。包含内部类的类称为内部类的外部类。

如果想要通过一个类来使用另一个类,可以定义为内部类。

内部类的外部类的成员变量在内部类仍然有效,内部类中的方法可以调用外部类的方法。不论静态还是非静态的,内部类都可以直接调用外部类中的属性。

c2f6e2b76b98039f89f7802d87bb1816.png

内部类的类体中不可以声明类变量和类方法。

3f57a9af8ffb79b30f22378241c68a96.png

内部类可以由外部类使用外部类中在函数中创建内部类的对象完成。

1fc7b04ea3d6ca2545587acce7b9dc3c.png

如果内部类的权限是非私有的,非静态的,就可以在其外部其他程序中被访问到,通过创建外部类对象访问内部类

b1806c5d154a27e47adedf947544d96a.png

如果内部类是静态的,非私有的,静态成员可以直接类名调用,非静态成员通过创建外部类对象使用。

081fb7b5d11a5f9b11129070f256f6f9.png

classOuter{int a=5;static int b=6;voidshow() {

System.out.println("hello world");

}classInner{voiduse() {

System.out.println(a);//5

System.out.println(b);//6

show();//hello world

}

}voidcreate() {newInner().use();

}

}public classDemo {public static voidmain(String[] args) {newOuter().create();

Outer.Inner oi=new Outer().newInner();

oi.use();

}

}

内部类的字节码不一样,编程外部类$内部类名

7abc1c2c4f84d44786dfcc7d07bde3cc.png

c4fbdfc0d61cd8422d6bf2bfc198328b.png

将内部类定义在局部位置上。可以访问外部类的所有成员,如果内部类是静态的,那么声明周期与普通的 static 没有区别。

匿名类

匿名类:就是没有名称的类,其名称由Java 编译器给出,匿名类就是利用父类的构造函数和自身类体构成的一个类。

6b62025e2c3b3b34610f5d3790ba99a8.png

父类是子类集成或者要实现的外部类或者接口。

匿名类可以继承父类的方法,也可以重写父类的方法。

匿名类可以访问外部类的成员变量和方法

匿名类由于是一个 new 的结果,所以其实可以赋值给一个父类的对象。分为俩类:成员匿名与局部匿名类

98c0bd0436f35ec2bfff0ccb4c8e98b9.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值