挑错题(ABCD注释标注的哪行代码有错误?) class OutClass { int m = 1; static float x; //A class InnerClass { int m =12; //B static float n =20.89f;//C InnerClass(){ } void f() { m = 100; } } void cry() { InnerClass tom = new InnerClass(); //D } }
时间: 2024-02-14 15:25:23 浏览: 42
在给出的代码中,注释标注的行C有错误。
在内部类中,静态成员变量是不允许的。因为内部类是与外部类的实例相关联的,它不能拥有静态成员。所以在行C中,将静态关键字应用于内部类的成员变量n是错误的。
正确的代码应该是:
```java
class OutClass {
int m = 1;
static float x;
class InnerClass {
int m =12;
InnerClass(){
}
void f() {
m = 100;
}
}
void cry() {
InnerClass tom = new InnerClass();
}
}
```
相关问题
1)静态内部类: 必须以static关键字标注 只能访问外部类中的静态的成员变量或者是静态的方法 访问一个内部类使应该这样outerClass.innerClass inter = new outerClass.innerClass();不能直接实例化内部类 2)成员内部类: 定义在一个类的内部,但是没有static关键字修饰 生成示例的方法outerClass.innerClass inter = (new outerClass()).new innerClass() 对外部类变量的引用outClass.this.variale 可以访问外部类的静态与非静态方法 3)局部内部类: 局部内部类指的是定义在一个方法中的类 只有在当前方法中才能对局部内部类里面的方法以及变量进行访问 局部内部类只能访问其所在方法的final类型变量
很好,这是一个关于Java内部类的问题。你已经给出了三种类型的内部类:静态内部类、成员内部类和局部内部类。你还给出了它们的特点和使用方法。静态内部类必须使用static关键字进行标注,并且只能访问外部类中的静态成员变量或方法。成员内部类没有static关键字修饰,并且可以访问外部类的静态和非静态方法。局部内部类定义在一个方法中,只有在当前方法中才能对其方法和变量进行访问,而且只能访问其所在方法的final类型变量。这些都是内部类的基本特点和使用方法。
静态内部类: 必须以static关键字标注 只能访问外部类中的静态的成员变量或者是静态的方法 访问一个内部类使应该这样outerClass.innerClass inter = new outerClass.innerClass();不能直接实例化内部类 2)成员内部类: 定义在一个类的内部,但是没有static关键字修饰 生成示例的方法outerClass.innerClass inter = (new outerClass()).new innerClass() 对外部类变量的引用outClass.this.variale 可以访问外部类的静态与非静态方法 3)局部内部类: 局部内部类指的是定义在一个方法中的类 只有在当前方法中才能对局部内部类里面的方法以及变量进行访问 局部内部类只能访问其所在方法的final类型变量
你所说的是Java中三种内部类的分类方法,其中静态内部类、成员内部类和局部内部类都是Java中的内部类,它们各自具有不同的特点和用途。
静态内部类:
- 必须以static关键字标注;
- 只能访问外部类中的静态的成员变量或者是静态的方法;
- 访问一个内部类应该这样:OuterClass.InnerClass inter = new OuterClass.InnerClass();不能直接实例化内部类。
成员内部类:
- 定义在一个类的内部,但是没有static关键字修饰;
- 生成示例的方法:OuterClass.InnerClass inter = (new OuterClass()).new InnerClass();
- 对外部类变量的引用:OuterClass.this.variable;
- 可以访问外部类的静态与非静态方法。
局部内部类:
- 局部内部类指的是定义在一个方法中的类;
- 只有在当前方法中才能对局部内部类里面的方法以及变量进行访问;
- 局部内部类只能访问其所在方法的final类型变量。
总的来说,内部类是Java中一种非常特殊的语言特性,它能够提供更好的封装性和灵活性,同时也能够实现一些复杂的设计模式。在使用内部类时,需要根据实际情况选择适合的内部类类型。