有两个类
public calss Father{
public String name;
public int age;
}public calss Son extends Father{
public String personal; public static void main(String args[]){
Father mySon=new Son();
mySon.personal="ssss" //我想问这里为什么是错的?mySon不是只想Son吗,为什么得不到他的成员变量personal
//如果写成
Son mySon=new son();
mySon.personal="ggg";这样就是可以的
}}
public calss Father{
public String name;
public int age;
}public calss Son extends Father{
public String personal; public static void main(String args[]){
Father mySon=new Son();
mySon.personal="ssss" //我想问这里为什么是错的?mySon不是只想Son吗,为什么得不到他的成员变量personal
//如果写成
Son mySon=new son();
mySon.personal="ggg";这样就是可以的
}}
Father里是看不到子类的这个成员变量的。
多态问题。
虽然mySon指向Son()实例,但他已经向上转型为Father,这个mySon可以调用Father和Son的共有属性和方法,但对于只有Son()才有的属性和方法,他不识别,因为Father没有这些属性和方法,也就是说Son是一个Father,但Father不是一个Son,无法向下转型,因为他不知道要转为那个
父类去调用子类的方法和成员变量,不对吧!!
Son son = (Son)mySon
向上转型是安全的,因为基类不会具有大于导出类的接口;但向下转型是不安全的,在运行期会对其检查,以便保证他是我们需要的类型,如果不是,就会抛出ClassCastException的异常
这个public需要删除
class都写不对:
害我找了好多才能运行!