内部类/内部接口那点事
来源:互联网 发布:其孰能讥之乎的其 编辑:程序博客网 时间:2024/06/06 21:50
先上总结:
1、一个类的静态内部类,因为是静态的,所有不需要有包裹类的对象就可以实例化这个内部类(new Out.Inner()),所以在包裹类的静态方法中可以直接new这个内部类,而且静态内部类不可以访问包裹类的成员变量。
2、一个类的非静态内部类,必须要先有包裹类的对象才能实例化这个内部类(new Out().new Inner()),且,在包裹类的静态方法中不能实例化非静态内部类(原因:非静态内部类可以访问包裹类的的成员变量,但包裹类的静态方法不可以)。
3、静态接口,这个我经常用,以前都是迷迷糊糊的就用了,不管写不写成static一样用,原因是内部接口不管写不写static它都是static的。
测试代码:
public class InnerClass {private int i;public static void main(String[] args) {//new Cls1().func(); // errornew Cls2().func();}// 非静态内部类, 在他包裹类的静态方法中不能直接new// 因为内部类可以访问包裹类的成员变量,而在上面的静态方法中不能访问成员变量// 所以如果可以new,就违背了自身class Cls1 {public void func() {i++;System.out.println("cls1");}}// 静态内部类, 可以在包裹类的静态方法中直接new// 因为他是静态的, 可以在不实例化包裹类的前提下实例化static class Cls2 {public void func() {//i++; // 不可以访问, 因为该类可以在包裹类未实例化的前提上实例化System.out.println("cls2");}}// 一个类的内部接口本身就是静态的public interface If {}}class Cls3 {public void test() {new InnerClass().new Cls1().func(); // 对于非静态内部类,必须先有包裹类的对象才能有内部类的对象new InnerClass.Cls2().func(); // 静态的不需要}public class Ifimpl implements InnerClass.If {}}
0 0
- 内部类/内部接口那点事
- 内部类、内部接口
- 内部类、内部接口
- 匿名内部类那点事
- 内部类和内部接口
- 内部类与内部接口
- 内部类、匿名内部类、内部接口比较
- Java内部类和内部接口
- 内部接口和内部类的区别
- 内部接口与内部类的体会
- 学习笔记 Java_ch04_内部类内部接口 2014.7.27
- java基础教程5:内部类和内部接口
- 内部类、内部接口与继承的加深理解
- new 接口{内部实现方法} 转为 匿名内部类
- 接口编程那点事
- 接口编程那点事
- 外部类、外部接口、类的内部类、类的内部接口、接口的内部类、接口的内部接口 修饰符
- 内部类与接口
- Spring事务详解
- Codeforces Round #266 (Div. 2)
- uva 10909 - Lucky Number(树状数组)
- 学习笔记
- HDU 1069 dp
- 内部类/内部接口那点事
- 单例模式在游戏中的运用
- ubuntu下安装matlab
- 频繁模式挖掘(Frequent Pattern Mining)
- hdu 5014 Number Sequence 位运算+规律
- 算法题目:寻找迷失的数字。
- 观察者模式在游戏中的运用
- wpf 中Button 边框闪烁
- IOS7官方推荐图标和图像尺寸