练习题Quiz

Section 1

基于下面的代码

1 2 3 4 5 6 7 8 9
public class Cla { public void f1() { System.out.println("cla f1") } public void f2() { System.out.println("cla f2") }}
1 2 3 4 5
public class Dla extends Cla { public void f3() { System.out.println("dla f3") }}
1 2 3 4 5 6 7 8
public class Ela extends Dla { public void f1() { System.out.println("dla f1") } public void f4() { System.out.println("ela f4") }}
1 2 3 4 5 6 7 8
public class Fla extends Cla { public void f1() { System.out.println("fla f1") } public void f5() { System.out.println("fla f5") }}

分析每个练习中的 被标记为 check 的那行代码

1. 编译时是否会报错

2. 如果1 不会报错,那么,运行时是否会报错

3. 如果1 2 都没错,如果 有输出代码,请写出输出结果

Exercise 1

方法覆盖对调用的影响

Case 1
Cla la = new Cla();
la.f1(); // check
Case 2
Dla la = new Dla();
la.f1(); // check
Case 3
Ela la = new Ela();
la.f1(); // check

Exercise 2

左右类型匹配

Case 1
Cla la = new Cla(); // check
Case 2
Dla la = new Dla(); // check
Case 3
Cla la = new Dla(); // check
Case 4
Dla la = new Cla(); // check

Exercise 3

权限对调用的影响

Case 1
Cla la = new Cla(); 
la.f1();    // check
la.f3();    // check
Case 2
Dla la = new Dla();
la.f1();    // check
la.f3();    // check
Case 3
Cla la = new Dla();
la.f1();    // check
la.f3();    // check

Exercise 4

转型规则

Case 1
Cla cla = new Dla();
Dla la = (Dla)la; // check;
Case 2
Cla cla = new Dla();
Ela la = (Ela)la; // check;
Case 3
Cla cla = new Dla();
Fla la = (Fla)la; // check;

Exercise 5

传参规则

Case 1
public class Driver {
    public void run() {
        func(new Cla()) // check
    }
    public void func(Cla la) {
        ...
    }
}
Case 2
public class Driver {
    public void run() {
        func(new Dla()) // check
    }
    public void func(Dla la) {
        ...
    }
}
Case 3
public class Driver {
    public void run() {
        func(new Cla()) // check
    }
    public void func(Dla la) {
        ...
    }
}
Case 4
public class Driver {
    public void run() {
        func(new Dla()) // check
    }
    public void func(Cla la) {
        ...
    }
}

Exercise 5

返回规则

Case 1
public class Driver {
    public void run() {
        func()
    }
    public Cla func() {
        return new Cla(); // check
    }
}
Case 2
public class Driver {
    public void run() {
        func()
    }
    public Dla func() {
        return new Dla(); // check
    }
}
Case 3
public class Driver {
    public void run() {
        func()
    }
    public Cla func() {
        return new Dla(); // check
    }
}
Case 4
public class Driver {
    public void run() {
        func()
    }
    public Dla func() {
        return new Cla(); // check
    }
}

Exercise 5

返回接收

Case 1
public class Driver {
    public void run() {
        Cla la = func(); // check
    }
    public Cla func() {
        return new Cla(); 
    }
}
Case 2
public class Driver {
    public void run() {
        Dla la = func(); // check
    }
    public Dla func() {
        return new Dla(); 
    }
}
Case 3
public class Driver {
    public void run() {
        Cla la = func(); // check
    }
    public Dla func() {
        return new Dla(); 
    }
}
Case 4
public class Driver {
    public void run() {
        Dla la = func(); // check
    }
    public Cla func() {
        return new Cla();
    }
}

Exercise 6

isClass

Case 1
Cla la = new Cla();
System.out.println(la.getClass() == Cla.class); // check
Case 2
Dla la = new Dla();
System.out.println(la.getClass() == Cla.class); // check 
Case 3
Cla la = new Dla();
System.out.println(la.getClass() == Cla.class); // check 
Case 3
Cla la = new Dla();
System.out.println(la.getClass() == Dla.class); // check 

ZZAX 微信公众

文档一更新,立刻告诉你