interface InterfA {
String S = "good ";
void f();
}
abstract class ClassA {
abstract void g();
}
class ClassB extends ClassA implements InterfA { //B是A的子类和接口A的继承
void g() {
System.out.print(S); //good
}
public void f() {
System.out.print(" "+ S); // good
}
}
public class Main1 {
public static void main(String[] args) {
ClassA a = new ClassB();
InterfA b = new ClassB();
a.g(); //good
b.f(); // good
}
}
Class B是A的子类和接口A的继承,在Class B中,复写了抽象类A的g方法,还定义了接口A中的f方法。
最终在main函数中,向上实例化一个抽象类A的实例a,一个接口A的实例b,
通过a,b来调用他们各自的方法,输出一个good(来自a.g())和一个 good(来自b.f)。
interface Alpha {
void f();
}
class Beta implements Alpha {
public void f() {
System.out.println("Beta.f()");
}
public void g() {
System.out.println("Beta.g()");
}
}
public class Main3 {
public static void main(String[] args) {
Alpha a = new Beta();
a.f();//Beta.f()
System.out.println(a.getClass().getName());//Beta
try {
Beta b = (Beta)a;
b.g();//Beta.g()
} catch (Exception e) {
System.out.println("Error");
}
}
}