interface TestA {
String toString();
}
public class Test {
public static void main(String[] args) {
System.out.println(new TestA() {
public String toString() {
return "test";
}
});
}
}
Run Code Online (Sandbox Code Playgroud)
结果是什么?
A.测试
B. null
C.在运行时抛出异常.
D.由于第1行中的错误,
编译失败.E.由于第4行中的错误,
编译失败.F.由于第5行中的错误,编译失败.
这个问题的答案是什么?为什么?关于这个问题我还有一个问题.在第4行中,我们创建了A的对象.是否可以创建接口的对象?
鉴于:
class TestA {
public void start() { System.out.println(”TestA”); }
}
public class TestB extends TestA {
public void start() { System.out.println(”TestB”); }
public static void main(String[] args) {
((TestA)new TestB()).start();
}
}
Run Code Online (Sandbox Code Playgroud)
结果是什么?
A. TestA
B. TestB
C.编译失败.
D.运行时抛出异常.
我给这个问题的答案是 B
在第7行完成类型转换的优点是因为我们知道要调用的方法取决于实际的对象类型.任何人都可以举例说明类型转换发挥作用???????
class B {
void process()throws Exception{
System.out.println("hi sh");
}
}
class C extends B {
void process(){
System.out.println("hhhhhh");
}
public static void main(String args[]){
B a=new C();
try{
a.process();
}
catch(Exception e)
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
在调用process方法时,我们必须使用try catch块.但是,如果我只将C的对象存储在C的引用变量中,C a=new C()那么就不需要尝试catch块.
谁能告诉我原因?