假設類X是類Y的父類,下列聲明對象x的語句中不正確的是( )。
A.X x=new X();
B.X x=new Y();
C.Y x=new Y();
D.Y x=new X();
答案:D
向下轉型操作本身是有前提條件的,必須發生向上轉型後纔可以發生向下轉型。
各個選項的代碼實現:
A
class X{
public void fun(){
System.out.println("666");
}
}
class Y extends X{
public void fun(){
System.out.println("2333");
}
}
public class Test1_1_5_1 {
public static void main(String args[]){
X x=new X(); //實例化父類對象
x.fun();
}
}
//結果
//666
B
class X{
public void fun(){
System.out.println("666");
}
}
class Y extends X{
public void fun(){
System.out.println("2333");
}
}
public class Test1_1_5_1 {
public static void main(String args[]){
X x=new Y(); //實例化子類對象,對象向上轉型
x.fun();
}
}
//結果
//666
C
class X{
public void fun(){
System.out.println("666");
}
}
class Y extends X{
public void fun(){
System.out.println("2333");
}
}
public class Test1_1_5_1 {
public static void main(String args[]){
Y x=new Y(); //實例化子類對象
x.fun();
}
}
//結果
//2333
D
class X{
public void fun(){
System.out.println("666");
}
}
class Y extends X{
public void fun(){
System.out.println("2333");
}
}
public class Test1_1_5_1 {
public static void main(String args[]){
//向下轉型操作本身是有前提條件的,必須發生向上轉型後纔可以發生向下轉型。
Y x=new X(); //實例化父類對象,向下轉型
}
}
//結果
//Error:(25, 13) java: 不兼容的類型: X無法轉換爲Y