对以下代码说明错误的是( ) class Aclass{ Aclass(int n) { System.out.println("Aclass"); } } class Bclass extends Aclass{ Bclass () { System.out.println("Bclass"); } } A. Bclass的构造方法没有int参数。 B. Bclass没显式调用super(); C. Aclass定义了有参构造方法之后,编译器就不会再提供默认无参构造方法。 D. Bclass没显式调用super(某整数);
时间: 2024-04-29 20:21:01 浏览: 40
选项 B 是错误的。在 Java 中,如果一个类没有显式调用父类的构造方法,则会默认调用父类的无参构造方法。而在这段代码中,虽然子类 Bclass 没有显式地调用父类 Aclass 的构造函数,但是它仍然会调用父类 Aclass 的无参构造函数。因此,选项 B 中的说法是错误的。
选项 A、C、D 中都包含了正确的信息。A 选项说 Bclass 的构造方法没有 int 参数,这是正确的。Bclass 的构造方法没有参数,因此它没有传递任何参数给父类 Aclass 的构造方法。因为 Aclass 只定义了有参构造方法,没有定义无参构造方法,所以 C 选项也是正确的。而 D 选项说 Bclass 没有显式调用 super(某整数),这也是正确的。如果要调用父类 Aclass 的有参构造方法,应该使用 super(n) 的方式。因此,选项 A、C、D 中都包含了错误的信息。
相关问题
对以下代码说明错误的是( ) class Aclass{ Aclass(int n) { System.out.println("Aclass"); } } class Bclass extends Aclass{ Bclass () { System.out.println("Bclass"); } }
代码中的错误在于子类 Bclass 没有显式地调用父类 Aclass 的构造函数。当父类没有默认构造函数时,子类必须显式地调用父类的构造函数来完成父类的初始化。所以需要在子类 Bclass 的构造函数中使用 super(n) 来调用父类 Aclass 的构造函数。同时,因为父类 Aclass 中没有默认构造函数,所以需要显式地定义一个带参数的构造函数。修改后的代码如下:
```
class Aclass {
Aclass(int n) {
System.out.println("Aclass");
}
}
class Bclass extends Aclass {
Bclass() {
super(1);
System.out.println("Bclass");
}
}
```
试对以下代码进行评审,指出存在的问题。 import java.io.*; public class Test { public boolean copy(InputStream is, OutputStream os) throws IOException { int count = 0; byte[] buffer = new byte[1024]; while ((count = is.read(buffer)) >= 0) os.write(buffer, 0, count); return true; } public void copy(String[] a, String[] b, String ending) { int index; String temp = null; System.out.println(temp.length()); int length = a.length; for (index = 0; index < a.length; index++) { if (true) { if (temp == ending) break; b[index] = temp; } } } public void readFile(File file) { InputStream is = null; OutputStream os = null; try { is = new BufferedInputStream(new FileInputStream(file)); os = new ByteArrayOutputStream(); copy(is, os); is.close(); os.close(); } catch (IOException e) { e.printStackTrace(); } finally { } } }
以下是代码存在的问题:
1. copy() 方法中没有关闭输入流和输出流。应该在最后使用 try-finally 块或 try-with-resources 语句来关闭输入流和输出流。
2. copy() 方法的返回值永远为 true,与方法的实际功能并不相关,因此需要修改。
3. copy() 方法中的缓冲区大小为硬编码,应该使用常量或配置文件中的值来代替。
4. copy() 方法中 while 循环的判断条件不够严谨,应该改为 (count = is.read(buffer)) != -1。
5. copy() 方法中的异常处理不够完善,应该至少捕获 IOException 异常。
6. copy() 方法中的变量命名不够规范,应该使用更加具有意义的名称。
7. copy() 方法中的参数类型应该使用更加抽象的类型,例如 InputStream 和 OutputStream。这样可以增加代码的灵活性。
8. copy() 方法中的返回值应该根据实际情况改为 boolean 类型。
9. copy() 方法中的代码缩进有误,应该进行统一。
10. copy() 方法中的 buffer 变量应该在方法内部进行初始化,而不是作为参数传入方法。
11. copy() 方法中的异常应该及时处理,最好还要记录日志,以便后续排查问题。
12. copy() 方法中的代码执行逻辑不够清晰,应该进行优化。
13. copy() 方法中的局部变量未被使用或赋值,例如 count 变量。
14. copy() 方法中的 if 语句中条件永远为 true,应该进行修改。
15. copy() 方法中的 b 数组未被初始化,可能会导致 NullPointerException 异常。
16. copy() 方法中的 temp 变量未被初始化,可能会导致 NullPointerException 异常。
17. copy() 方法中的 if 语句中条件应该使用 equals() 方法来比较字符串。
18. copy() 方法中的 for 循环中的 index 变量可以使用 foreach 循环来代替。
19. readFile() 方法中的异常处理不够完善,应该至少捕获 IOException 异常。
20. readFile() 方法中的输入流和输出流未被关闭,应该使用 try-with-resources 语句来关闭输入流和输出流。
阅读全文