c#或java里子类对象赋值给父类有什么用,举几个例子啊。

我看视频学的。它里面是如下代码,绕来绕去的有什么意义啊。//Person是父类,父类函数PersonSay()Personp=newStudent();p.PersonS... 我看视频学的。 它里面是如下代码,绕来绕去的有什么意义啊。
//Person是父类 ,父类函数PersonSay()

Person p = new Student();
p.PersonSay();
Student s=(Student )p; //把p强转为Student类型后赋给s
s.StudentSay();
是叫里氏转换吧,我想知道它的实际用途,求举例啊。
展开
 我来答
爷丶霸气张扬
推荐于2016-10-03 · TA获得超过298个赞
知道小有建树答主
回答量:158
采纳率:0%
帮助的人:136万
展开全部
里氏替换原则:

定义一:如果对每一个类型为S的对象o1,都有类型为T的对象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型S是类型T的子类型。
定义二:所有引用基类的地方必须能透明地使用其子类的对象。

大概的要求是:

1、父类对象指向子类实例,向上转型和向下转型是里氏替换的一种应用。

2、子类必须完全实现父类的方法,父类对象出现的地方都可以用子类对象进行替换。

这是里氏替换的主要内涵,下面对这两种体现分别进行代码举例。

定义一个抽象类Person:

public abstract class Person{

public abstract String getDetails();

}

用Student类来继承Person

public class Student extends Person{

private String stuName;

private int age;

private double score;

public Student() {

super();

// TODO Auto-generated constructor stub

}

public Student(String stuName, int age, double score) {

super();

this.stuName = stuName;

this.age = age;

this.score = score;

}

@Override

public String getDetails() {

// TODO Auto-generated method stub

return this.stuName + this.age + this.score;

}
}

在Test类里面可以用:

Person person = new Student();//这是向上转型。

也可以定义:

Student student = new Student(“stu”,19,99);

可以将student对象用在所有应该使用Person类型的地方。

Private List<Person> person = new ArrayList<Person>();

Person.add(student);
subirt
2014-10-28 · TA获得超过1876个赞
知道大有可为答主
回答量:2435
采纳率:0%
帮助的人:1235万
展开全部
举个例子:
你第一天去学校上课,假如其他同学你都不认识,你知不知道别的同学会些什么?(可能你同桌会弹吉他,你前面的同学很会唱歌),这些在你和他们第一次见面的时候你是不知道。老师也不知道,老师想要某一个学生站起来回答问题,老师知道不管是哪个学生都会双腿站起来,都会说中国话(当然这是在班级里没有残疾人的情况下),知道这两点老师就可以叫某个学生起来回答问题了,对吧。
在这个例子里,会说中国话就代表你的PersonSay()方法,老师就是使用你这个方法的人,那么老师还需不需要知道具体是哪个学生了?不需要了,可以随意点名,因为这个班级里都是人类,都会站起来说中国话。这样我就可以用父类的引用指向子类的对象了。也就是Person p = new Student();

但是,如果下一节课是音乐课,音乐老师要找一位同学起来唱歌,一位同学用吉他来伴奏,这时候就不能像上面的老师那样随便点名了,就要找你同桌上去弹吉他,你前面的同学上去唱歌,因为就他俩会这个。但是他俩也一样会站起来说中国话;这时候就可以Student s=(Student )p;后面我还要用到,s.song()唱歌的方法,这时候就没办法用p.song了,因为不是每个同学都会唱歌

这个牵扯到很多东西,包括向上转型(自动类型转化),继承,多态。为多种设置模式服务(比如如工厂模式,代理模式),还有反射机制。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式