package baiduzhidao;
public class OuterClass {
innerClass in = new innerClass(); // 在外部类实例化内部类对象引用
public void ouf() {
in.inf(); // 在外部类方法中调用内部类方法
}
class innerClass {
innerClass() { // 内部类构造方法
}
public void inf() { // 内部类成员方法
}
int y = 0; // 定义内部类成员变量
}
public innerClass doit() { // 外部类方法,返回值为内部类引用
// y=4; //外部类不可以直接访问内部类成员变量
in.y = 4; //①这是是改变y的值,还是给对象in赋值
//在这一句中初始化变量 in 为innerClasss实例的一个引用 innerClass in = new innerClass();
//这句话把内部类in的变量y值赋值为4;
return new innerClass(); // 返回内部类引用 ②这里返回的是什么
//这里返回一个new的innnerClass对象实例,对应方法声明中的public innerClass doit()
}
public static void main(String args[]) {
OuterClass out = new OuterClass();
// 内部类的对象实例化操作必须在外部类或外部类中的非静态方法中实现
OuterClass.innerClass in = out.doit(); //③类名.类名 对象这是什么意思,out.doit();是什么
//上面的OuterClass out = new OuterClass();声明一个out变量指向new的outerClass;
//调用out的doit()方法,返回OuterClass.innerClass的对象实例;
//对应上面注释中的“外部类中的非静态方法中实现”
OuterClass.innerClass in2 = out.new innerClass();//④in2是哪里来的,如果是新创建的对象为什么等号后面不是new OuterClass.innerClass()
//in2是一个变量而已,叫什么名字随便
//内部类的声明不是static的必须通过实例化过得对象来得到;
//对应上面注释中的“内部类的对象实例化操作必须在外部类”;
//搜索静态内部类和内部类
//还是搞不懂,把基础看明白,什么是类,什么是对象,什么是方法,什么事静态方法,方法返回值等,搜索“图灵机”的概念,弄明白“引用和指针”
}
}