网站首页 > 精选教程 正文
写在前面:
视频是什么东西,有看文档精彩吗?
视频是什么东西,有看文档速度快吗?
视频是什么东西,有看文档效率高吗?
1. 介绍
张小飞:什么是内部类?
诸小亮:就是将一个类定义在另一个类的内部,比如:
class People{
int idCard;
// Person 在 People 的内部,它就是内部类,而 People 称为:外部类
class Person{
int age;
}
}
张小飞:原来如此
诸小亮:这时候,Person就是内部类,而 People 是外部类
2. 特点
诸小亮:使用内部类需要注意几点
- 内部类是外部类中的成员, 所以可以使用 public,private,static 这样的修饰符
- 创建内部类对象前,需要先创建外部类对象
public static void main(String[] args){
//创建内部类对象,需要先创建外部类对象
// People.Person person = new People().new Person();
People p = new People();
People.Person person = p.new Person();
}
- 内部类中可以直接访问外部类中的成员,比如:
张小飞:师兄,最后一点需要您解释一下
诸小亮:没问题
- 因为内部类中持有了外部类中的引用,所以可以直接使用外部类的属性
其实完整写法应该是:
上图 People.this 就是我们创建的 People 对象
张小飞:能否证明一下?
诸小亮:看下面代码
class People{
int idCard;
public class Person{
void show(){
System.out.println(People.this);//输出People.this的值
}
}
}
public class Demo{
public static void main(String[] args){
People p = new People();
System.out.println(p);//输出p的值
People.Person person = p.new Person();
person.show();
}
}
结果:
3. 静态内部类
诸小亮:当内部类加上 static 修饰符,那么它就是静态内部类,它也有一些特点:
- 只能访问外部类中的静态成员
- 创建静态内部类对象,不用创建外部类对象
张小飞:这个简单
4. 匿名内部类
诸小亮:接着,我们就说最后一个——匿名内部类?
张小飞:没有名字的内部类?
“不错,就是没有名字的内部类(其实就是内部类的简写方式)”
“这,我倒是想见识一下”
1. 演示
诸小亮:看下面代码
interface People{
void show();
}
public class Demo{
public static void main(String[] args){
//匿名内部类:必须继承某个外部类或实现某个接口
People p = new People() {//该类没名字,只能用父接口或父类的名字创建对象
//实现show方法
@Override
public void show() {
System.out.println("我是匿名内部类。。。。。");
}
};
//调用show方法
p.show();
}
}
结果:
张小飞:原来是这样子
诸小亮:另外,它也有另一种叫法:匿名内部类对象
张小飞:不过,这有什么用呢?
2. 好处
诸小亮:一般情况下应该一个类写一个 java 文件(之前为了方便,都写在一个java文件中)
- 好处:不用重新创建新的 java 文件
- 就像上面的 People 接口,如果想创建 People 类型的对象,又不想写实现类,这时就可以用匿名内部类
张小飞:明白了
- 上一篇: 「java」浅谈java内部类
- 下一篇: Java内部类及其实现原理
猜你喜欢
- 2024-11-24 永远不要使用双花括号初始化实例,除非你想OOM
- 2024-11-24 java中的匿名内部类总结
- 2024-11-24 Java Nested Classes(内部类~英文技术文档翻译)
- 2024-11-24 带你深入学习java内部类_匿名类,细到不能再细
- 2024-11-24 为何要在Java中使用静态类?
- 2024-11-24 68、下面的内部类在哪里new不会编译出错
- 2024-11-24 面向对象高级特性内部类
- 2024-11-24 Java局部内部类
- 2024-11-24 Java 内部类和异常类(详细版)
- 2024-11-24 IntelliJ IDEA 2022.2.1 beta 发布,新增支持 Java 18
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)