Tuesday, November 26, 2013

Question: Interfaces, abstract class, inheritence and function decleration

Given:

interface Data { public void load(); }
abstract class Info { public abstract void load(); }

Which class correctly uses the Data interface and Info class?

A.
public class Employee extends Info implements Data {
        public void load() { /*do something*/ }
}

B.
public class Employee implements Info extends Data {
public void load() { /*do something*/ }
}

C.
public class Employee extends Info implements Data {
public void load(){ /*do something*/ }
public void Info.load(){ /*do something*/ }
}


D.
public class Employee implements Info extends Data {
public void Data.load(){ /*do something*/ }
public void load(){ /*do something*/ }
}

E. public class Employee implements Info extends Data {
public void load(){ /*do something*/ }
public void Info.load(){ /*do something*/ }
}

F.
public class Employee extends Info implements Data{
public void Data.load() { /*do something*/ }
public void Info.load() { /*do something*/ }
}

Execution:
In option B, Interface only can implement and Class can only extends.
In option C Info.load() is invalid method declaration
D & E are wrong use of inheritance i.e always to implement interface and to extend classes
 F is invalid method declaration.
Answer: A
public class Employee extends Info implements Data {
        public void load() { /*do something*/ }
}

No comments:

Post a Comment