java内部类
来源:互联网 发布:touch bar 知乎 编辑:程序博客网 时间:2024/05/22 17:38
内部类是一个编译时的概念,一旦编译成功,就会成为两个完全不同的类。对于外部类Outer和内部类Inner编译完成后出现outer.class和outer$inner.class两类。所有内部类的成员变量和方法可以和外部相同。
- 成员内部类
成员内部类,就是作为外部类的成员,可以直接使用外部类的所有成员和方法,即使是private的。同时外部类要访问内部类的所有成员变量/方法,则需要通过内部类的对象来获取。
要注意的是,成员内部类不能含有static的变量和方法。因为成员内部类需要先创建了外部类,才能创建它自己的
public class Outer { public static void main(String[] args) { Outer outer = new Outer(); //创建外部类 Outer.Inner inner = outer.new Inner(); //创建内部类 inner.print("Outer.new"); inner = outer.getInner(); inner.print("Outer.get"); } // 推荐使用getxxx()来获取成员内部类,尤其是该内部类的构造函数无参数时 public Inner getInner() { return new Inner(); } public class Inner { public void print(String str) { System.out.println(str); } } }
运行结果:
Outer.new
Outer.get
- 局部内部类
局部内部类,是指内部类定义在方法和作用域内
- 匿名内部类
- 静态内部类
class Out { private static int age = 12; static class In { public void print() { System.out.println(age); } }}public class Demo { public static void main(String[] args) { Out.In in = new Out.In(); in.print(); }}
可以看到,如果用static 将内部内静态化,那么内部类就只能访问外部类的静态成员变量,具有局限性
其次,因为内部类被静态化,因此Out.In可以当做一个整体看,可以直接new 出内部类的对象(通过类名访问static,生不生成外部类对象都没关系)
阅读全文
0 0
- 【Java】【内部类】Java 内部类简介
- [Java] Java 内部类
- Java 内部类(成员内部类、局部内部类、静态内部类和匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、局部内部类、静态内部类、匿名内部类)
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- Java内部类(成员内部类、静态内部类、局部内部类、匿名内部类)小结
- java的内部类、匿名内部类、局部内部类
- java内部类之成员内部类、静态内部类
- java 成员内部类 局部内部类,匿名内部类
- Java 静态内部类/内部类
- java内部类、静态内部类 小结
- Java内部类,静态内部类
- JAVA 内部类与静态内部类
- java内部类--局部内部类
- Java 内部类以及匿名内部类
- DP专题考试总结(2)
- <c语言经典100例>c25 递归输出1-100
- Hou Yi's secret(hdu4082——2011icpc北京站B题)
- leetcode 331. Verify Preorder Serialization of a Binary Tree 二叉树的前序序列验证
- 小白的第一篇博客
- java内部类
- 解决Visual Studio编译错误"文本后缀无效; 未找到文文本运算符或文本运算符模板"
- 贪心法 求最大子阵列
- 51nod 1837 砝码称重
- Leetcode之Permutation in String 问题
- 线程
- SQL完整性约束
- UVA 469 Wetlands of Florida
- static和extern对函数的作用