The following series of classes and interfaces compil. But the following class, after this code, does not.
public abstract class ClassA {
public void methodOne() {
System.out.println("Hello from methodOne.");
}
public int methodTwo(int a, int b) {
return a + b;
}
public abstract int methodThree(int a, int b);
}
public interface InterfaceA {
int methodOne(int a, int b);
}
public class ClassB extends ClassA {
public int methodOne(int a) {
return 5 * a;
}
public int methodTwo(int a, int b) {
return 2 * super.methodTwo(a, b);
}
public int methodThree(int a, int b) {
return a * b;
}
}
public class ClassC extends ClassB implements InterfaceA {
public int methodOne(int a, int b) {
return a % b;
}
public int methodThree(int a, int b) {
return a ‐ b;
}
public void methodFour(int a) {
System.out.println("Here is number: " + a);
}
}
public class ClassD extends ClassC {
public void methodFour(int a, int b) {
System.out.println("Here is the sum: " + (a + b));
}
}
The following outputs, in the following class, give errors during compilation, but why? Also, what exactly does it mean when, for example, ClassA_Type bla = new ClassB()?
public class SomeClass {
public static void main(String[] args) {
ClassA oneA = new ClassB();
System.out.println(oneA.methodOne(5));
InterfaceA oneIA = new ClassD();
oneIA.methodFour(6, 7);
}
}