成员内部类

成员方法类是定义在一个类中的方法外的类,例如:

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("实现类覆盖重写了接口方法");
}
}

最新文章

  1. 微信小程序实战笔记
  2. Notes:SVG(1)
  3. 深入了解C#系列:谈谈C#中垃圾回收与内存管理机制
  4. Windows Azure Cloud Service (12) PaaS之Web Role, Worker Role, Azure Storage Queue(下)
  5. Power of Two
  6. android之短信拦截器
  7. bzoj3295: [Cqoi2011]动态逆序对(cdq分治)
  8. git commit --amend
  9. 图像特征提取之(一)HOG特征
  10. oracle游标小试
  11. 双MIC安卓手机录音问题
  12. AutoTile 自动拼接(一) 学习与实践
  13. Chapter 2 User Authentication, Authorization, and Security(6):服务器权限授予粒度
  14. Linux变量内容的删除、取代与替换
  15. Python unittest 测试输入(input)和输出(print)
  16. StatefulSet(一):拓扑状态
  17. JavaScript基础整理
  18. HDU 2865 Birthday Toy
  19. 洛谷 P4148 简单题 解题报告
  20. [转帖]Vim编辑器使用方法详解

热门文章

  1. 重新整理 .net core 实践篇————网关中的身份签名认证[三十七]
  2. AcWing 342. 道路与航线
  3. JAVA并发(8)-ThreadPoolExecutor的讲解
  4. 资源:Maven仓库地址路径
  5. leetcode 面试题 17.22. 单词转换(DFS+回溯)
  6. hdu 2093 成绩排名
  7. 计算机网络体系结构整理-第九单元移动IP
  8. PYTHON找色不变移动
  9. 家庭账本开发day04
  10. Linux上生产环境源码方式安装配置postgresql12