java学习中的问题,求解
import java.util.Random;
class FK{
void dx(){
System.out.println("变形");
}
}
class FK_szx extends FK{
void bx(){
System.out.println("山子型在变形");
}
}
class FK_lzx extends FK{
void bx(){
System.out.println("L字型在变形");
}
}
class FK_zzx extends FK{
void bx(){
System.out.println("Z字型在变形");
}
}
class FK_cfx extends FK{
void bx(){
System.out.println("长方形在变形");
}
}
class FK_tzx extends FK{
void bx(){
System.out.println("田字形在变形");
}
}
public class java006{
public static void main(String[] args){
Random r=new Random();
int a=r.nextInt(5);
FK fk=null;
switch(a){
case 0:
fk=new FK_szx();
break;
case 1:
fk=new FK_lzx();
break;
case 2:
fk=new FK_zzx();
break;
case 3:
fk=new FK_cfx();
break;
case 4:
fk=new FK_tzx();
break;
}
fk.bx();
}
}
/*
E:pptppt03>javac java006.javajava006.java:111: 错误: 找不到符号 fk.bx(); ^ 符号: 方法 bx() 位置: 类型为FK的变量 fk1 个错误*/
父类引用在指向子类对象时 父类引用可以调用父类有的方法 但是不能调用子类有而父类没有的方法 如果这个时候想调用的时候 需要父类引用强制类型转换
这相当于父类向子类向下转换
fk.bx();改成fk.dx();