记两道很有意思的JavaSE阶段基础题

建议读者在看完代码以后可以先想想自己的答案再看运行答案

第一道题:

关于Java的构造函数中super问题

class Supper {
    int i = 10;
    public Supper() {
        print();
        i = 20;
    }
    public void print() {
        System.out.println("Supper==="+i);
    }
}

class Sub extends Supper {
    int i = 30;
    public Sub() {
        print();
        super.print();
        i = 40;
    }

    public void print() {
        System.out.println("Sub==="+i);
    }
}

public class TestExtends {
    public static void main(String[] args) {
        new Sub();
    }
}

这道题的答案:

记两道很有意思的JavaSE阶段基础题_第1张图片

第二道题:

关于参数匹配的问题:

class A {
    public String show(D obj) {
        return ("A and D");
    }

    public String show(A obj) {
        return ("A and A");
    }
}

class B extends A {
    public String show(B obj) {
        return ("B and B");
    }

    public String show(A obj) {
        return ("B and A");
    }
}

class C extends B {
}

class D extends B {
}
public class Testmain {
    public static void main(String[] args) {
        A a1 = new A();
        A a2 = new B();
        B b  = new B();
        C c  = new C(); 
        D d  = new D(); 
        System.out.println(a1.show(b));   
        System.out.println(a1.show(c));   
        System.out.println(a1.show(d));   
        System.out.println(a2.show(b));   
        System.out.println(a2.show(c));   
        System.out.println(a2.show(d));   
        System.out.println(b.show(b));    
        System.out.println(b.show(c));    
        System.out.println(b.show(d));    
    }

}

这道题的运行结果:
记两道很有意思的JavaSE阶段基础题_第2张图片

关于答案的解析和思考,等我下一次再做吧,嘻嘻>_<

你可能感兴趣的:(Java)