练习题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