java中内部类中还有内部类请给实例
当内部类中还有一个内部类,下面给出了一个实例。【新手可忽略不影响继续学习】(以下多出代码, 用蓝色标记)
马克- to-win:马克 java社区:防盗版实名手机尾号: 73203。
例2.2:---本章源码
class ShellMark_to_win {
int shell_x = 100;//马克-to-win:既然每个内部类实例都可以改变这里的外层类静态属性或实例属性,这里成为内部类实例们可以交互的地方
static int n;
void visitCore() {
Core core = new Core();
core.y=8;
core.display();
}
// 下面是个实例内部类,必须有个外层类实例,才能有这个内部类实例。所以就有了this这个概念。
class Core {
/* 下一句错误,根据语法:马克-to-win:静态的域或方法只能出现在静态类或最外层类上。The field m cannot be declared static; static fields can only be declared in static inner class or top level classes,*/
// static int m=9;
int y = 10; // y is local to core
void display() {
shell_x=shell_x+20;
n=n+1;//轻松访问外层类的静态变量
System.out.println("n is "+n+" display: shell_x and y " + shell_x + " "+ShellMark_to_win.this.shell_x+ " " + y+ " "+this.y);
}
class CoreCore{
void displayDis() {
Core.this.display();
}
}
}
Core newC()
{
return new Core();
}
void showy() {
// y=9; // 错误,马克-to-win:外层类不能直接访问内部类的属性。error,y not known here! System.out.println(y);
}
}
public class Test {
public static void main(String args[]) {
ShellMark_to_win shell = new ShellMark_to_win();
shell.visitCore();
ShellMark_to_win.Core sc=shell.new Core();//马克-to-win:内部类是存在于外部对象里的。
sc.display();
ShellMark_to_win.Core.CoreCore scc=sc.new CoreCore();
scc.displayDis();
ShellMark_to_win.Core sc1=shell.newC();
sc1.display();
/* 不能像下面这样写, 因为Core 是内部类。 can not resolve Core class ,because Core class are defiened as ShellMark_to_win's inner class. */
//Core core = new Core();
}
}
result is:
n is 1 display: shell_x and y 120 120 8 8
n is 2 display: shell_x and y 140 140 10 10
n is 3 display: shell_x and y 160 160 10 10
n is 4 display: shell_x and y 180 180 10 10