成员内部类、静态内部类、局部内部类、匿名内部类
来源:互联网 发布:淘宝上卖内衣的货源 编辑:程序博客网 时间:2024/05/17 12:00
内部类
内部类可以直接访问外部类的成员
public class Outer { int num = 10; class Inner { public void show() { System.out.println("num=" + num); } } public static void main(String[] args) { Outer.Inner inner = new Outer().new Inner(); inner.show(); } }
- 运行结果
外部类访问内部类的成员,需要创建内部类的对象
public class Outer1 {Inner inner = new Inner();public void show() { int num = inner.num = 20; System.out.println("num=" + num);}class Inner { int num;}public static void main(String[] args) { Outer1 outer = new Outer1(); outer.show();}
}
运行结果
静态内部类
- 内部类中有静态方法,那么这个内部类就是静态内部类
静态内部类不需要外部类对象
public class Outer3 { static int num = 10; static class Inner { public static void show() { System.out.println("num=" + num); } } public static void main(String[] args) { Outer3.Inner inner = new Outer3.Inner(); inner.show(); }}
运行结果
静态内部类不能访问外部类的非静态属性和方法
成员内部类
如何new对象
外部类.内部类 对象名=new 外部类().new 内部类
public class Outer {int num = 10;class Inner { public void show() { System.out.println("num=" + num); }}public static void main(String[] args) { //Outer.Inner inner = new Outer().new Inner(); //相当于 Outer outer=new Outer(); // Outer.Inner inner=outer.new Inner(); Outer.Inner inner = new Outer().new Inner(); inner.show(); }}
- 运行结果
- 使用成员内部类会造成内存泄漏,内存越用越少。因为你在释放外部类对象的时候,内部类持有外部类对象的引用,GC不能回收
局部内部类
在外部类的方法中定义一个内部类,叫做局部内部类
public class Outer4 {private String name;private int age;public void show() { class Inner { public void showInner(String name, int age) { System.out.println(name + "今年" + age + "岁"); } } Inner inner = new Inner(); inner.showInner("小明", 15);}public static void main(String[] args) { Outer4 outer = new Outer4(); outer.show();}
}
- 运行结果
局部内部类访问方法中的变量,变量需定义成final修饰的,在内部类中访问局部变量,而定义的这个局部变量在之后还会使用,如果不定义成final修饰的,变量会随着方法的结束从栈内存中消失,就会导致局部内部类不能访问局部局部变量。
Inner类
public abstract class Inner { public abstract void show();}
Outer类
public class Outer { public Inner showInner(){ final int i=10; Inner inner=new Inner() { @Override public void show() { System.out.println("i="+i); } }; return inner; } public static void main(String[] args) { Outer outer=new Outer(); Inner inner=outer.showInner(); inner.show(); }}
运行结果
匿名内部类
匿名内部类只使用一次
Animal类
public abstract class Animal { public abstract void eat();}
测试类
public class Test {class Cat extends Animal { @Override public void eat() { System.out.println("猫在吃老鼠"); }}public static void main(String[] args) { new Animal() { @Override public void eat() { System.out.println("猫在吃鱼"); } }.eat();}}
运行结果
阅读全文
0 0
- 内部类 静态内部类 成员内部类 局部内部类 匿名内部类
- Java 内部类(成员内部类、局部内部类、静态内部类和匿名内部类)
- 内部类(静态内部类 成员内部类 局部内部类 匿名内部类)
- 内部类---(静态内部类、成员内部类、匿名内部类、局部内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、局部内部类、静态内部类、匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- 内部类:成员内部类,局部内部类,静态内部类,匿名内部类
- 成员内部类局部内部类静态内部类匿名内部类总结
- 成员内部类、局部内部类、静态内部类和匿名内部类区别
- Java静态内部类、匿名内部类、成员式内部类和局部内部类
- java成员内部类、局部内部类、静态内部类和匿名内部类
- Java静态内部类、匿名内部类、成员式内部类和局部内部类
- 成员内部类.局部内部类.静态内部类.匿名内部类的区别
- Java静态内部类、匿名内部类、成员式内部类和局部内部类
- Linux进程间通信——使用命名管道
- 求两个集合的交集
- 微信小程序日历
- 计算机网络课程设计——基于Windows socket编程的简易聊天机器人
- Kotlin中类和对象初始化
- 成员内部类、静态内部类、局部内部类、匿名内部类
- Python入门学习(4)
- javascript 对象判空
- java虚拟机指令详解
- 【剑指offer-解题系列(61)】把二叉树打印成多行
- 基于ZigBee的物联网环境数据采集系统
- EXCEL VBAProject密码破解 工作表密码破解
- 不在activity中打开activity的方法
- 考试,一种严格的水平鉴定方法。