美文网首页
多态中父类引用指向子类对象的一些问题的个人看法

多态中父类引用指向子类对象的一些问题的个人看法

作者: 梅川潇酷子 | 来源:发表于2017-10-26 13:05 被阅读228次

父类引用指向子类对象:假设我有一个Animal类,和一个Dog类,则:Animal animal = new Dog();此为父类引用指向子类对象

1.为什么要用父类的引用指向子类的对象?

有句话我觉得很精辟:现在写的代码,被将来的代码调用,这都不算事。现在写的代码,能调用将来的代码,这才牛逼勒。

具体来说:假如有一个类,这个类需要实现吃各种水果的方法。那如果我们在类里面定义方法:

public  void eat(Banana banana) { }

public  void eat(Apple apple) { }

。。。。。。

这样就显得很麻烦,但要是我要是把这个方法写成: public void eat(Fruit fruit){}  这样只要继承Fruit或者实现Fruit接口,就都可以作为eat的参数。这样就简化了程序。

再比如:

写一个画图程序的时候,你想画方,画圆,画线。方,圆,线都属于Shape类型。那么就应该有

class Shape{}

class Fang extends Shape{}

class Yuan extends Shape{}

class Xian extends Shape{}

然后把他们画出来的方法在某个类里,这个方法接收一个图形,不管是什么样的形状,你只要给我一个图形,我就可以把它画出来,public void draw();

子类里面重写这个方法。如果你的参数定义成Shape s,那么就可以接受继承Shape的所有实际形状 public void draw(Shape s);这就实现了多态的概念。

2.这样做有什么意义?

子类是对父类的一个改进和扩充,所以一般子类在功能上较父类更强大,属性较父类更独特, 定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。

3为什么父类引用子类对象时,不能调用子类特有的方法?

比如说:

定义一个父类Animal,一个子类Bird,Bird有个独有的方法:飞行。我现在 Animal animal = new Bird    (); 你要调用 animal.fly();这是不符合逻辑的,因为动物不是都会飞。这就要回归到问题2:定义一个父类类型的引用指向一个子类的对象既可以使用子类强大的功能,又可以抽取父类的共性。

4.这样做的好处是什么?

总的来说有三方面:一,实现多态。二,减小耦合。三,增加了程序的可移植性。

5.子类能覆盖父类的变量吗(父类引用指向子类对象时)?答案是不能

比如我在Animal中:int i =1;  在Dog中: int i = 1000 ;

然后 Animal animal = new Dog();

输出animal.i,结果为1.

相关文章

  • 2.4 多态(面向对象)

    1、Java中的多态 对象的多种形态 引用多态父类的引用可以指向本类的对象父类的引用可以指向子类的对象 方法多态创...

  • Java的多态特性

    多态:对象的多种形态 1、引用多态 父类的引用可以指向本类的对象父类的引用可以指向子类的对象 2、方法多态 创建本...

  • 多态

    一、多态 1、引用多态父类的引用指向本类的对象父类的引用指向子类的对象 继承是实现多态的基础 2、方法多态创建本类...

  • JAVA学习之多态篇(五)

    多态=对象的多种形态 继承是多态的实现基础 一. 引用的多态 父类的引用可以指向本类的对象 父类的引用可以指向子类...

  • 多态

    对象具有多种形态。(1)引用多态父类引用指向本类的对象父类引用指向子类的对象(2)方法多态创建本类对象时,调用的方...

  • 二、Java面向对象-多态

    1、对象的多种形态 引用多态父类的引用可以指向本类的对象父类的引用可以指向子类的对象 方法多态创建本类对象时,调用...

  • 多态

    对象的多种形态 1 引用多态 父类的引用可以指向本类的对象 父类的引用可以指向子类的对象 2方法多态 创建本类对象...

  • 面向对象的三大特性之--多态

    1.对象的多种形态(1).引用多态父类的引用可以指向本类的对象父类的引用可以指向子类的对象(2).方法多态创建本类...

  • java中的多态

    多态对象的多中形态 1.引用的多态 1.父类的引用可以指向本类的对象2.父类的引用可以指向子类的对象 2.方法的多...

  • 多态

    多态:父类类型的引用指向了子类类型的对象. 多态的弊端:只能调用父类中的功能,不能调用子类特有的功能. 多态的好处...

网友评论

      本文标题:多态中父类引用指向子类对象的一些问题的个人看法

      本文链接:https://www.haomeiwen.com/subject/ditkpxtx.html