/**
*
*/
package com.M.controller.test;
/**
* @author 作者 : 谭健 (online zuozuo)
* @date 创建时间:2017年3月3日 下午3:43:02
* @version 1.0
* @since
* @use 本类用于:解释内部类,当他向上转型为实现一个接口,他可以让接口实现完全隐藏,且该实现不可用
* @return
*/
public class InsideClassTest {
private static Integer integer = 2017;
Integer money = 12000;
public Integer date = 2;
/**
* 假设本类实现某个接口,他是一个私有的内部类
*/
private class Com {
private Integer integerCom = 2018;
public Integer comI() {
return integerCom;
}
}
public static void main(String[] args) {
errT();
}
static void errT() {
System.err.println(integer);
}
/**
* 内部类:他能访问其外围对象的所有成员,而不需要任何特殊条件
*/
class InsideClass {
// 访问外部成员
void err() {
// 变量
System.err.println(integer);
System.err.println(money);
System.err.println(date);
// 方法
errT();
System.err.println(self());
System.err.println(selfI());
}
/**
* 该方法没有任何运行时开销
*
* @return
*/
InsideClassTest self() {
return InsideClassTest.this;
}
/**
* 创建一个内部类的对象,该对象必须由外部类的对象来创建
*
* @return
*/
InsideClass selfI() {
InsideClassTest t = new InsideClassTest();
InsideClassTest.InsideClass i = t.new InsideClass();
return i;
}
}
/**
* 静态内部类:作为一个嵌套类存在,他的创建不需要外部类的对象
*/
static class StaticInsideClass {
}
}