JAVA父类引用指向子类的对象是什么意思???

 我来答
568145421
推荐于2017-11-25 · 知道合伙人软件行家
568145421
知道合伙人软件行家
采纳数:1353 获赞数:6756

向TA提问 私信TA
展开全部
你好,给你举个简单的例子吧。类A,另外一个类B继承了类A。有如下代码:
A a = new B() ; 这就称父类的引用a 指向了子类的对象new B(),就是这个意思。
追问
有什么用呢?
追答
当然有用啦。假如你的A是一个接口,或者抽象类,那么是不可以创建对象的,这样写就可以也能够它的引用去指向他子类或者实现类的对象。这句话写在这里感觉不明显。其实主要是用在方法的参数上,也就是多态性(java的三大特性之一,可想何等重要),为了让你理解深刻,我举个例子。
假如有一个类,这个类需要实现吃各种水果,有香蕉,苹果,梨子等等。
我们是不是就得写:
public void eat(Banana banana) { //.....}
public void eat(Apple apple) { //.....}
等等等等。这样是不是很麻烦啊,但是我要是把这个方法写成:
public void eat(Fruit fruit){//....}
这样只要继承Fruit或者实现Fruit接口,就都可以作为eat的参数,是不是大大简化了编程。
面向对象,你慢慢体会吧,其乐无穷。
shikenian520
推荐于2018-12-14 · 超过10用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:18.3万
展开全部
父类 Person 子类 Student
可以这样定义 Person p = new Student();
就是你问的 “JAVA父类引用指向子类的对象”
但是你得注意:父类的引用指向子类的话,此时的 p 只能使用Person类中存在的方法,但是子类
Student类中扩充的方法就不能调用了
class Person {
private int age ;
private String name;
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public void setAge(int age){
this.age = age;
}
publc int getAge(){
return age ;
}
}

class Student extends Person {
private Strng school ;
public void setSchool(String school){
this.school = school;
}
public String getSchool(){
return this.school;
}
}
public class Demo{
public static void main(String [] args){
Person p = new Student();
//p.setSchool("清华大学")
//String school = p.getSchool(); //以上的两个语句都是错误的,你自己看看吧
}
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ccppv
2012-03-18 · TA获得超过2994个赞
知道大有可为答主
回答量:5074
采纳率:40%
帮助的人:2927万
展开全部
A a = new B() ;
上面这位朋友的例子来说,
A是我们的引用类型,他是父类,B是子类。
a是一个子类对象,但是引用的是父类的类型。

这样做的好处就是,
你在下面的代码中,如果一旦发现该B对象无法适应你的环境,可以转换成父类中的其它对象。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
目光决定的态度
2018-12-28
知道答主
回答量:1
采纳率:0%
帮助的人:775
展开全部
这就是Java面向对象的特征→多态.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
我也是摆渡
2012-03-20
知道答主
回答量:28
采纳率:0%
帮助的人:12.6万
展开全部
楼上正解
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式