一、成员内部类
成员内部类: 定义在类中方法外的类
格式
class 外部类{
//外部类的成员位置
class 内部类
{
// 内部类的成员位置
}
}
使用方式
- 外部类 外部类对象名 = new 外部类();2. 外部类.内部类 内部类对象名 = 外部类对象名.new 内部类();简写方式:外部类名.内部类 对象名 = new 外部类型.new 内部类型();
内部类编译成独立的.class文件,前面冠以外部类的类名和 符 号 ( 如 : O t h e r 符号(如:Other 符号(如:OtherInner.class)
二、被私有的成员内部类
私有的成员内部类,只能在外部类的其他成员方法中创建这个成员内部类的对象,然后通过这个对象去调用被私用的成员内部类中的成员
三、被静态的成员内部类
定义格式
外部类.内部类 变量名 = new 外部类.内部类();
四、静态成员内部类的静态方法
定义格式
内部类.外部类.静态成员方法
五、匿名对象
概念
没有名称的对象。创建对象时,只有创建对象的语句,却没有把对象地址赋值给某个变量。
创建格式
new 类名(参数列表);
匿名对象使用场景和总结
匿名对象可以调用成员变量并赋值,但是这样的使用方式并没有意义。同时匿名对象在调用方法时,如果方法本身有访问到成员变量,方法的执行结果依然没有意义。
匿名对象通常是在对象只需要访问成员一次的情况下使用,如果对象需要多次的操作成员,就不能使用匿名对象来访问。在此我向大家推荐一个架构学习交流圈。交流学习指导伪鑫:1253431195(里面有大量的面试题及答案)里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化、分布式架构等这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多
匿名对象可以简化代码的书写,并且匿名对象没有指针指向引用,一旦匿名对象代码执行结束,这时这个对象就立刻变成垃圾。节约内存成本。
六、匿名内部类
匿名内部类: 是内部类的简化写法,本质是一个带有具体实现的父类或者父接口的匿名的子类对象
匿名内部类的前提
匿名内部类必须继承一个父类或者实现一个父接口
格式
new 父类名或者父接口名(){ //方法重写 public void method(){ //执行语句 }}
七、引用类型扩展
类作为参数:本类对象和子类对象都可以
类作为返回值:本类对象和子类对象都可以
抽象类和接口作为参数:子类对象
抽象类和接口作为返回值:子类对象