public class father{
say(){};
}
public class son extends father
{say(){
};
public static void main(String args[])
{
father fa=new son();
fa.say;
son son1=(son)fa;
son1.say();
}
}
son1和fa调用的都是子类的方法吧?
那son son1=(son)fa;和son son1=new son();的用法有什么区别呢?
(object)object这个概念理解的不太好,请指教
say(){};
}
public class son extends father
{say(){
};
public static void main(String args[])
{
father fa=new son();
fa.say;
son son1=(son)fa;
son1.say();
}
}
son1和fa调用的都是子类的方法吧?
那son son1=(son)fa;和son son1=new son();的用法有什么区别呢?
(object)object这个概念理解的不太好,请指教
son son1=new son(); //直接实例化;
//主要还是基类和派生类的关系,看看<<JAVA编程思想>>,理解透了,就不复杂了
举个例子:
char ch ='a';
int k=int(ch);//可以
但是:
int k=1111;
char ch=(char)k;//不行
这是因为int的范围比char的范围大
son son1=(son)fa; //写这行代码的前提是,已经知道fa是Son的实例或者其子类的实例
根据楼主这行代码,应该也可以把其他的father字类转换成son类的实例.
给楼主提个醒,这在程序中很容易抛出ClassCastException的.
father fa=new son(); //fa是son类
fa.say();//所以调用son的say方法
son son1=(son)fa; //无论怎么类型转换,说到底,son1还是son的实例
son1.say(); //所以仍旧调用son类的say方法.