简单java继承问题

zhangaiqiang888 2010-04-18 10:15:42
有两个类
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";这样就是可以的
}

}
...全文
129 10 打赏 收藏 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
longjun1302 2010-04-18
  • 打赏
  • 举报
回复
public calss Son extends Father


这个public需要删除
class都写不对:
害我找了好多才能运行!
zfq642773391 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 longjun1302 的回复:]
我想问你一下,这个程序对么?除了你说的这个!!
[/Quote]
这个程序错误多多,有N多处错误,楼主是新手啊,基础很重要啊,好好看看基础的
zfq642773391 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 xy_2005 的回复:]
引用 3 楼 zfq642773391 的回复:
Father mySon=new Son();
虽然mySon指向Son()实例,但他已经向上转型为Father,这个mySon可以调用Father和Son的共有属性和方法,但对于只有Son()才有的属性和方法,他不识别,因为Father没有这些属性和方法,也就是说Son是一个Father,但Father不是一个Son,无法向下转型,因为他不知……
[/Quote]
恩 就是这样
向上转型是安全的,因为基类不会具有大于导出类的接口;但向下转型是不安全的,在运行期会对其检查,以便保证他是我们需要的类型,如果不是,就会抛出ClassCastException的异常
longjun1302 2010-04-18
  • 打赏
  • 举报
回复
我想问你一下,这个程序对么?除了你说的这个!!
kobe_gino 2010-04-18
  • 打赏
  • 举报
回复
你必须得通过向下转型啊。

Father mySon=new Son();
Son son = (Son)mySon
xy_2005 2010-04-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 zfq642773391 的回复:]
Father mySon=new Son();
虽然mySon指向Son()实例,但他已经向上转型为Father,这个mySon可以调用Father和Son的共有属性和方法,但对于只有Son()才有的属性和方法,他不识别,因为Father没有这些属性和方法,也就是说Son是一个Father,但Father不是一个Son,无法向下转型,因为他不知道要转为那个
[/Quote]
这里解释得很清楚啦,如果真要调子类的可以强制转型((Son)mySon).personal="ggg";
longjun1302 2010-04-18
  • 打赏
  • 举报
回复
Father mySon=new Son();
父类去调用子类的方法和成员变量,不对吧!!
zfq642773391 2010-04-18
  • 打赏
  • 举报
回复
Father mySon=new Son();
虽然mySon指向Son()实例,但他已经向上转型为Father,这个mySon可以调用Father和Son的共有属性和方法,但对于只有Son()才有的属性和方法,他不识别,因为Father没有这些属性和方法,也就是说Son是一个Father,但Father不是一个Son,无法向下转型,因为他不知道要转为那个
youyouzhishen 2010-04-18
  • 打赏
  • 举报
回复
把Son实例赋给 Father引用,是向上转型。该引用只能访问基类和导出类(子类)共有的属性,不能访问,子类特有属性。
SealedBook 2010-04-18
  • 打赏
  • 举报
回复
Father mySon=new Son();
Father里是看不到子类的这个成员变量的。
多态问题。

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧