1、interface Com { int MAX = 100; //【1】 void f();}abstract class Animal implements Com { int MIN ; //【2】}class Dog extends Animal{ void f(){ //【3】 MIN = 10; //【4】 MAX=20; //【5】 } }public class TestDemo{public static void main(String[] arr){Com c=new Dog();System.out.println(c.MAX+”,”+c.MIN); //【6】}}请认真阅读上代码,请问哪几行代码有错?什么原因导致的?
时间: 2024-03-10 09:51:12 浏览: 72
这段代码中有两行有错。
错误1:第2行 Animal类中的MIN变量没有赋初始值,而抽象类中的变量不会自动初始化,因此需要在构造方法中对其进行初始化,或者直接在声明时赋初值。
错误2:第5行 MAX变量是一个常量,接口中定义的常量默认是public static final的,也就是说它是不可改变的,因此在Dog类中不能对MAX进行赋值。
正确的代码应该是这样的:
```
interface Com {
int MAX = 100; // 【1】
void f();
}
abstract class Animal implements Com {
int MIN = 0; // 【2】
}
class Dog extends Animal {
void f() { // 【3】
MIN = 10; // 【4】
}
}
public class TestDemo {
public static void main(String[] arr) {
Com c = new Dog();
System.out.println(c.MAX + "," + ((Dog) c).MIN); // 【6】
}
}
```
这里将Animal类中的MIN变量直接在声明时赋值为0,也可以在Animal类的构造方法中进行初始化。
在输出中需要将c转换为Dog类型,才能访问MIN变量。
相关问题
interface Com{ int MAX=100;// 【1】 void f0; } abstract class Animal implements Com { int MIN; //【2】 } class Dog extends Animal{ void f(){//【3】 MIN =10; // 【4】 MAX=20; //【5】 } } public class TestDemo{ public static void main(String[] arr){ Com c=new Dog(); System.out.println(c.MAX+”,”+c.MIN);// 【6】 } } 请认真阅读上代码,请问哪几行代码有错?什么原因导致的?
第 4 行和第 6 行代码有错。
第 4 行代码错误的原因是,MIN 是 Animal 类的实例变量,而 Dog 类并没有定义或初始化它,因此在 Dog 类的方法中无法直接访问它。如果要使用 MIN,需要在 Dog 类中先定义并初始化它,或在 Animal 类中将它定义为静态变量。
第 6 行代码错误的原因是,接口中定义的变量 MAX 是静态常量,可以通过接口名直接访问,而不能通过实现接口的类的对象访问。因此应该使用 Com.MAX 而不是 c.MAX。同时,Animal 类中的 MIN 是实例变量,需要先创建一个 Animal 类的对象才能访问它,但是 Dog 类并没有调用 Animal 类的构造方法创建 Animal 类的对象,因此无法访问 MIN。
程序阅读分析题 1、interface Com { int MAX = 100; //【1】 void f(); } abstract class Animal implements Com { int MIN ; //【2】 } class Dog extends Animal{ void f(){ //【3】 MIN = 10; //【4】 MAX=20; //【5】 } } public class TestDemo{ public static void main(String[] arr){ Com c=new Dog(); System.out.println(c.MAX+”,”+c.MIN); //【6】 } } 请认真阅读上代码,请问哪几行代码有错?什么原因导致的?
代码中有两行错误,分别是第2行和第5行。
第2行错误的原因是抽象类Animal没有实现接口Com中的方法f(),因此Animal类必须也声明为抽象类。
第5行错误的原因是接口Com中的MAX常量是一个静态常量,无法被实例化对象(如Dog对象)所修改,因此会编译错误。应该将MAX常量声明为public static final,这样才能被Dog类访问到。
阅读全文