内部类
来源:互联网 发布:机箱设计软件 编辑:程序博客网 时间:2024/06/05 19:32
内部类
成员内部类
在类中定义类,在成员内部类中可以访问外部类的所有成员,存在内存泄漏的问题。
//外部类class Animal { private String name="小花"; //定义成员方法,方法中访问内部类 public void animalName(){ Cat cat=new Cat(); cat.show(); } //定义成员内部类 class Cat{ void show(){ //内部类访问外部类的成员变量 System.out.println("name="+name); } }}
//测试类public class TestAnimal { public static void main(String[] args) { Animal animal=new Animal();//创建外部类对象 animal.animalName();//调用animalName方法 }}
静态内部类
用static修饰成员内部类,不需要有外部类对象,不能访问外部的非静态成员,在非静态的内部类不允许定义静态成员。
class Animal { //属性使用静态修饰 private static String name="小花"; //定义静态内部类 static class animalName{ void show(){ System.out.println("name="+name); } }} //测试类public class TestAnimal { public static void main(String[] args) { //创建内部类对象 Animal.animalName animal=new Animal.animalName(); //调用内部类的方法 animal.show(); }}
方法内部类
只能在成员方法中定义,只能在当前方法中被使用
class Animal { private String name="小花"; public void animalName(){ class AnimalShow{ void show(){ //访问外部类的成员变量 System.out.println("name="+name); } } //调用内部类方法 AnimalShow an=new AnimalShow(); an.show(); }} //测试类 public class TestAnimal { public static void main(String[] args) { //创建外部类对象调用animalName方法 Animal animal=new Animal(); animal.animalName(); } }
匿名内部类
只能访问父类已有的方法
abstract class Cat { public abstract void eat(); }
class Animal { static Cat cat=new Cat(){ @Override public void eat() { System.out.println("小猫在吃鱼"); }; }; public static void main(String[] args) { cat.eat(); }}
阅读全文
0 0
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- 内部类
- C#——面向对象——重载操作符——自定义转换
- 新一代学生成绩管理系统(C语言版)
- C语言实现单链表
- 如何根据丝印查找相关的产品型号
- 解决:在anaconda下无法使用conda安装第三方库问题
- 内部类
- 虚拟机vmx文件--Centos
- feign-使用最佳实践
- call()和apply()的区别?
- 我的第一篇博客
- codeforces 489C Given Length and Sum of Digits...
- 并行化资源池队列 3 —— 紧密相关的同步化队列
- AOP之@AspectJ技术原理详解
- 记录