SCJP(OCPJP) 考古題解析 第14題

Given:

class Person {
    String name = "No name";
    public Person(String nm) {name = nm;}
}

class Employee extends Person {
    String empID = "0000";
    public Employee(String id) {empID = id;}
}

class EmployeeTest {
    public static void main(String[] args) {
        Employee e = new Employee("4321");
        System.out.println(e.empID);
    }
}

What is the result?


A. 4321 
B. 0000 
C. An exception is thrown at runtime. 
D. Compilation fails because of an error in line 18.


答案


解析:

由於繼承的關係

子代類別被實體化成為物件時

父代的建構子會先被運行

預設運行的父代建構子是無引數的建構子super()

但是Person 類別沒有無引數的建構子

這是就會出錯


這題要修正的話,有兩種方式:

1.在Employee的建構子的第一行加入super("name");


2.在Person類別中加入一個無引數的建構子Person(){}



0 意見:

張貼留言