不多说,直接上干货! 可以将一个类的定义放在另一个类的定义内部,这就是内部类. 内部类是一个非常有用的特性但又比较难理解使用的特性(鄙人到现在都没有怎么使用过内部类,对内部类也只是略知一二). 内部类我们从外面看是非常容易理解的,无非就是在一个类的内部在定义一个类. public class OuterClass { private String name ; private int age; public String getName() { return name; } public voi…
内部类访问外部类的变量必须是final吗? 如下: package com.java.concurrent; class A { int i = 3; public void shout() { class B { public void shout1() { System.out.println(i); } } B b = new B(); b.shout1(); } public static void main(String[] args) { A a = new A(); a.shout…
//this引用逃逸 // 1.构造器还未完成前,将自身this引用向外抛,使其他线程访问这个引用,进而访问到其未初始化的变量,造成问题 // 2.内部类访问外部类未初始化的成员变量 //3.多态继承中,父类访问子类未初始化的成员变量 public class TestThisEscape { final int a; int b = 3; static TestThisEscape obj; public TestThisEscape(){ a= 3; b= 5; //obj = new Te…
2016-07-04 15:56:39 我们都知道: 1.内部类可以直接访问外部类的private字段和方法: 2.非静态内部类持有外部类的引用: 3.外部类可以直接访问内部类的private字段和方法(不管是不是静态内部类): 最近看到一篇文章,大意是讨论这个的,处于好奇,想从字节码的角度研究一下原因,于是有此文. 1.关于javap命令: "The javap command disassembles one or more class files. The output depends o…
最近程序中需要用到多线程工作下的单例模式.而其多种实现方法中,利用内部类实现懒汉模式是一种值得推荐的方式.顺便也就对内部类和外部类之间的关系做了一下研究,总结如下(理解不困难,不粘贴代码了,有需要的留言,我再做个demo). static成员与非static成员的访问:无论是外部类访问内部类的静态成员(变量和函数等),还是内部类访问外部类的静态成员,都不能用实例访问,必须用类本身访问:相应地,访问对方的非静态成员,则必须用实例访问.这与两个普通类之间的相互访问对方的static or non-s…
//内部类只能在其外部类当中使用//局部内部类:定义在方法里面//如果内部类和外部类有重名,就近原则在内部类中优先访问内部类.//如果想访问宿主类的同名成员,使用OuterClass.this.xxxpublic class Learn10{ public static void main(String[] a){ OuterClass Otc = new OuterClass("一个外部类"); System.out.println(Otc.getN…
内部类获取外部类的成员变量,使用 外部类类名.this.变量名 的形式获取 public class Outer { public String name = "outer"; class Inner { String name = "inner"; public void show() { String name = "show"; System.out.println(name); System.out.println(this.name);…