子类父类问题

wjsq0705 2013-03-25 10:07:29
情况是这样的。一个父类person 有字段String id,String name,int age 这三个字段。子类student继承了父类并多加了一个float score字段。也就是四个字段。


问题来了。一个student 的的四个属性都设了值,然后再强转成父类person类,那子类student的score字段是怎么处理的。因为我再强转回来score的值是存在的。

import java.util.*;

import com.wj.vo.Person;
import com.wj.vo.Student;
public class CaiYingBi{
public static void main(String args[]){
Student st=new Student("122", "12", 1222, (float)1.1); //子类
Person ps=(Person)st;//父类
Student sst=(Student)ps;
System.out.println("id:"+sst.getId()+" name:"+sst.getName()+" age:"+sst.getAge()+" score:"+sst.getScore());
}
}


输出结果是得到的id:122 name:12 age:1222 score:1.1
...全文
158 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
nmyangym 2013-03-25
  • 打赏
  • 举报
回复
个人理解,这个score不需要处理,他就在那。 楼主这句:Person ps=(Person)st;//父类 ps 是个父类的引用,通过ps只能使用父类定义的属性,而对于ps来说,score就不可见了 (但它并没有消失)。而如果楼主把st赋值给 Object 对象的引用: Object o =st;则对 于引用o 来说,连Person的三个属性也隐藏了。但这些属性还在那里,对引用st来说,都 可见。象楼主那样,不用st,而新定义一个Student对象的引用sst,把ps强转回Student,这 4个属性都是可见的。 这是java继承的特性。
wjsq0705 2013-03-25
  • 打赏
  • 举报
回复
大神们周一都很忙啊。
wjsq0705 2013-03-25
  • 打赏
  • 举报
回复
引用 7 楼 nkuJerry 的回复:
引用 2 楼 nmyangym 的回复: 引用 1 楼 gxingmin 的回复:父类不能强制转成子类吧 当初创建的子类,这样的父类是可以强转为子类的. 比如: Person p = new Person(); 这个p对象是不能强转为子类的。 而 Person p = new Student(); 这个p 是可以强转为子类的。 Person p=new Student();……
。。。能先研究我的问题吗。。。
褚六 2013-03-25
  • 打赏
  • 举报
回复
引用 2 楼 nmyangym 的回复:
引用 1 楼 gxingmin 的回复:父类不能强制转成子类吧 当初创建的子类,这样的父类是可以强转为子类的. 比如: Person p = new Person(); 这个p对象是不能强转为子类的。 而 Person p = new Student(); 这个p 是可以强转为子类的。
Person p=new Student(); p编译时类型是Person,但运行时类型就是Student,还用转换?
gxingmin 2013-03-25
  • 打赏
  • 举报
回复
引用 2 楼 nmyangym 的回复:
引用 1 楼 gxingmin 的回复:父类不能强制转成子类吧 当初创建的子类,这样的父类是可以强转为子类的. 比如: Person p = new Person(); 这个p对象是不能强转为子类的。 而 Person p = new Student(); 这个p 是可以强转为子类的。
呵呵,学习
见习骑士 2013-03-25
  • 打赏
  • 举报
回复
引用 2 楼 nmyangym 的回复:
引用 1 楼 gxingmin 的回复:父类不能强制转成子类吧 当初创建的子类,这样的父类是可以强转为子类的. 比如: Person p = new Person(); 这个p对象是不能强转为子类的。 而 Person p = new Student(); 这个p 是可以强转为子类的。
学习。。。
wjsq0705 2013-03-25
  • 打赏
  • 举报
回复
引用 1 楼 gxingmin 的回复:
父类不能强制转成子类吧
我代码转了
引用 1 楼 gxingmin 的回复:
父类不能强制转成子类吧
你确定不能转?
yls_2523168510 2013-03-25
  • 打赏
  • 举报
回复
引用 1 楼 gxingmin 的回复:
父类不能强制转成子类吧
nmyangym 2013-03-25
  • 打赏
  • 举报
回复
引用 1 楼 gxingmin 的回复:
父类不能强制转成子类吧
当初创建的子类,这样的父类是可以强转为子类的. 比如: Person p = new Person(); 这个p对象是不能强转为子类的。 而 Person p = new Student(); 这个p 是可以强转为子类的。
gxingmin 2013-03-25
  • 打赏
  • 举报
回复
父类不能强制转成子类吧

51,410

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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