『Java』成员内部类 匿名内部类
2024-09-29 16:06:39
成员内部类
成员方法类是定义在一个类中的方法外的类,例如:
public class Outer{ // 外部类
class Inner { // 内部类
// 内部类成员
}
// 外部类成员
}
成员内部类可以看成是外部类的一个成员,所以可以拥有private public protected (default)
四种修饰符。
Outer.java
编译之后,生成的字节码文件如下:
Outer$Inner.class 成员内部类的字节码文件
Outer.class 外部类的字节码文件
成员内部类的访问特点:
内部类可以直接访问外部类的所有成员变量和方法,包括
private
修饰的成员如果内部类的成员和外部类成员同名,在内部类中访问外部成员的方式为:
外部类.this.成员变量
外部类.this.成员方法
外部类要访问内部类的成员,必须建立内部类对象。
如果想在另一个类中创建某一个类(外部类)中的成员内部类的对象,语法格式如下:
外部类名.内部类名 c = new 外部类名().new 内部类名();
匿名内部类
匿名内部类必须继承一个父类或者实现一个接口
使用格式:
父类名/接口名 obj = new 父类名/接口名() {
// 重写父类或者接口方法
}
例如:
public class Test {
public static void main(String[] args) {
MyInterface obj1 = new MyInterfaceImpl();
obj1.method();
// 实现类只需要用一次但是还得单独写一个实现类,此时可以使用匿名内部类
MyInterface obj2 = new MyInterface() {
@Override
public void method() {
System.out.println("匿名内部实现类覆盖重写了接口方法");
}
}; // 【不能忘记这里有个分号】
obj2.method();
}
}
interface MyInterface {
public abstract void method();
}
class MyInterfaceImpl implements MyInterface{
@Override
public void method() {
System.out.println("实现类覆盖重写了接口方法");
}
}
最新文章
- 微信小程序实战笔记
- Notes:SVG(1)
- 深入了解C#系列:谈谈C#中垃圾回收与内存管理机制
- Windows Azure Cloud Service (12) PaaS之Web Role, Worker Role, Azure Storage Queue(下)
- Power of Two
- android之短信拦截器
- bzoj3295: [Cqoi2011]动态逆序对(cdq分治)
- git commit --amend
- 图像特征提取之(一)HOG特征
- oracle游标小试
- 双MIC安卓手机录音问题
- AutoTile 自动拼接(一) 学习与实践
- Chapter 2 User Authentication, Authorization, and Security(6):服务器权限授予粒度
- Linux变量内容的删除、取代与替换
- Python unittest 测试输入(input)和输出(print)
- StatefulSet(一):拓扑状态
- JavaScript基础整理
- HDU 2865 Birthday Toy
- 洛谷 P4148 简单题 解题报告
- [转帖]Vim编辑器使用方法详解