1、interface Com( int MAX=100;// 【1】 void f0; ) abstract class Animal implements Com ( int MIN; //【2】 ) class Dog extends Animal void f0t //【3】 MIN =10; // 【4】 MAX=20; //【5】 ] public class TestDemo( public static void main(String[] arr)( Com c=new Dog0; System.out.println(c.MAX+”,”+c.MIN);// 【6】) 一 请认真阅读上代码,请问哪几行代码有错?什么原因导致的?
时间: 2024-01-18 17:02:49 浏览: 183
有两行代码有错,分别是:
1. 第一行的参数值不能在接口中指定初始值,应该改为:
```
interface Com {
int MAX = 100;
void f0();
}
```
2. 第二行的变量MIN没有指定初始值,应该改为:
```
abstract class Animal implements Com {
int MIN;
}
```
这是因为接口中的变量默认为public static final,必须在声明时初始化,而抽象类中的实例变量需要在子类中初始化。
相关问题
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】}}请认真阅读上代码,请问哪几行代码有错?什么原因导致的?
这段代码中有两行有错。
错误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变量。
阅读全文