分析如下代码,正确的选项是( )。 public class Test { public static void main(String[] args) { new B(); } } class A { int i = 7; public A() { System.out.println("i from A is " + i); } public void setI(int i) { this.i = 2 * i; } } class B extends A { public B() { setI(20); // System.out.println("i from B is " + i); } @Override public void setI(int i) { this.i = 3 * i; } } A. A的构造方法未被调用。 B. A的构造方法被调用,并且输出 "i from A is 7"。 C. A的构造方法被调用,并且输出"i from A is 40"。 D. A的构造方法被调用,并且输出"i from A is 60"。
时间: 2024-04-02 18:36:05 浏览: 101
正确的选项是B,A的构造方法被调用,并且输出 "i from A is 7"。
在`main`方法中创建了一个`B`对象,因此会调用`B`的构造方法。`B`的构造方法中调用了`setI`方法,并传入了参数`20`。由于`setI`方法在`B`类中被覆盖了,因此会调用`B`类中的`setI`方法。在`setI`方法中,将成员变量`i`的值设置为`3 * 20 = 60`。因此,`i`的值为`60`。
在`B`的构造方法执行完毕后,会调用父类`A`的构造方法。在`A`的构造方法中,输出语句会输出"i from A is 7",因为此时成员变量`i`的值为`7`,而不是`60`。这是因为,在对象初始化时,成员变量的初始化是在构造方法之前完成的。
因此,正确的选项是B。
相关问题
/** * 将大数字转换为小数并输出 */ public class test { public static void main(String[] args) { //
这是一个简单的Java程序示例,目的是将一个大数字转换成小数并打印出来。`test`类有一个名为`main`的静态方法,这是Java程序的入口点。在这个方法里,它接收一个字符串数组作为参数(虽然这里并未实际使用)。通常,我们会在这样的方法中处理用户输入或数据计算。
```java
public class test {
public static void main(String[] args) {
String largeNumber = "9876543210"; // 假设是一个大数字字符串
double decimal = Double.parseDouble(largeNumber); // 转换为double类型的数值
// 输出转换后的小数
System.out.println("大数字转为小数的结果: " + decimal);
}
}
```
在上述代码中,`Double.parseDouble()`方法用于将字符串`largeNumber`解析为双精度浮点数(double),然后将其结果存储在`decimal`变量中。最后,通过`System.out.println()`将结果输出到控制台。
public class Test { public static void main(String[] args) { Snake snake = new Snake(); snake.myJFrame(); } }是什么意思
这段代码是一个简单的 Java 程序,它创建了一个名为 Test 的公共类。该类中包含一个静态的 main() 方法,当程序运行时,该方法将被首先执行。在 main() 方法中,创建了一个名为 Snake 的对象,并调用了它的 myJFrame() 方法。Snake 是一个自定义的类,myJFrame() 方法可能是该类中的一个方法,用于创建并显示一个 JFrame 窗口。因此,这段代码的作用可能是创建并显示一个贪吃蛇游戏窗口。