当前位置: 代码迷 >> Java相关 >> java了解多态(初学者出征)
  详细解决方案

java了解多态(初学者出征)

热度:96   发布时间:2016-04-22 19:11:10.0
java了解多态(菜鸟出征)

本人大一狗,内容仅为个人的初体会,有误之处请见谅。

初学者可能刚接触一些新名词会感觉好像很厉害的样子,有种不明觉厉的样子。

比如多态,泛型,继承,接口。其实这些也并不是很难,不要被名字所吓到,不用怕,慢慢就会理解他了。

讲一下多态,我认为多态是建立在继承的基础之上的。

我们想看看继承。

class father{    String sex="man";    public void sport()    {        System.out.println("太极");    }} class son extends father{    String sex="small boy";    int age=15;    public void sport()    {        System.out.println("打球");    }}public class DuotaiDemo{        public static void main(String[] args)    {
    father xiaoming=new son();

 

        System.out.println(xiaoming.age);    }}

这里我们用了 子类继承了父类,子类继承了父类的属性和方法,比如sex 和sport方法

class son extends father{    }

即使在继承的时候没有任何的方法和属性,但是因为继承,此时子类有了父类的方法和属性。

-------------------------------------------

所谓多态就是

 father xiaoming=new son();

这里子类对象父类引用,刚开始这里理解可能有点绕,所以我们把他分解一下。

new son()这里创建了一个对象,然后我们用了一个父类型 来引用他即father类

本来继承就是大盒装小盒,我们创建了一个大盒,这是我们用小盒来指向这个大盒。

小盒里面装的东西东西大盒有,但是大盒装的(小盒以外)的东西没有。

同样我们父类的属性方法子类都有,但是子类额外的属性方法,父类没有

而多态就是用一个小盒引来指向大盒

class son extends father{

  public void homework()
  {
    System.out.println("do homework");
  }

}

比如这里子类 额外添加了作业方法,父类是没有。

那么我们回到多态,我们的子类对象有父类来引用,那么此是这个引用的变量 调用homework是行不通的

因为父类并没有homework方法,大盒子里面的(小盒以外)的东西没有

而如果是调用sport方法,调用的是子类的方法。(这是特殊之处)

对于新人可以这样理解(当然这不对),这个父类引用,就是指的是一个父类对象,没有说指向子类对象。

只不过他有点特殊,如果有和子类共有的方法,调用的就是子类的方法。(当然这不严谨)

仅此而已,其他没有什么特殊,还是照常一样,比如调用对象的sex,此时还是父类的。

1楼只字微言
理解有点偏差,father xiaoming=new son();,这是向上转型,指向的实际是一个子类对象 因为是向上转型 调用时会遗失和父类不同的方法
Re: New_Null
@只字微言,额 我知道,只是这样可能比较好记忆。(当然不能靠记忆)。谢谢指出