本帖最后由 谢洋 于 2013-3-1 12:46 编辑
package test1;
//内部类
public class InnerTest {
public static void main(String[] args) {
}
}
class Outer{
private String name="xxx";
private static String name2="qqqq";
//非静态内部类
class Inner1{
String name2="xxxx";
public void funtion(){
Outer.this.name="xxx";
Outer.this.name2="xxx";
}
}
//静态内部类
static class Inner2{
//非静态方法
public void funtion1(){
Outer.this.name="xxx";//报错:No enclosing instance of the type Outer is accessible in scope
/*报错提示信息
Multiple markers at this line
- The static field Outer.name2 should be accessed in a static way
- No enclosing instance of the type Outer is accessible in scope
*/
Outer.this.name2="xxx";//报错
}
//非静态方法
public static void funtion2(){
Outer.this.name="xxx";//报错:No enclosing instance of the type Outer is accessible in scope
/*报错提示信息
Multiple markers at this line
- The static field Outer.name2 should be accessed in a static way
- No enclosing instance of the type Outer is accessible in scope
*/
Outer.this.name2="xxx";//报错
}
}
}
/*
这是毕老师视频中说的:
访问规则:
a、内部类可以直接访问外部类中的成员,包括私有。
之所以可以直接访问外部类中的成员,是因为内部类中只
有一个外部类的引用,格式:外部类.this
b、外部类要访问内部类,必须建立内部类对象。
问题:
1、这规则仅是指非静态内部类的规则,还是指静态或非静态内部类? 为什么上面会报错?
2、看上面的测试结果好像这条规则只适合用于非静态内部类;
那么如果这条规则不适用于静态内部类,那为什么静态内部类不能这样子做,有得解的吗?
3,静态内部类可以访问外部类的成员吗,如果能,那怎么样的方式去访问?
真心求解,顺便拿技术分,最好是用:理论+代码示例来解释
*/
|