多态

一、为了实现多态操作,应在父类中声明过,在子类中重写的方法。

二、在父类中,一般情况下,为抽象类。方法为抽象方法。

1、抽象类不能实例化。、

2、子类如果不是抽象类(一般都不是,要被实例化的),则不要忘记了重写所有的抽象方法。

3、abstract修饰的抽象方法,不用写也不能写方法体。

4、private不能用来修饰抽象方法,因为还要被继承和重写呢。

5、向上转型。

     5.1 此时通过父类引用变量调用的方法是子类的方法(通过覆盖或者继承的),不是父类的方法。

     5.2 通过父类引用变量无法调用子类特有的方法,但可以通过强制转换后使用。

6、向下转型。

     向下转型即强制转换。

7、类型判断:instanceof

     判断一个对象是否属于一个类

三、多态

1、使用父类作为方法的形参

2、使用父类作为方法的返回值


四、其他

x2声明为父类对象却获得子类XXX的实例,那么x2.toString()究竟执行父类方法还是执行子类覆盖的方法呢?
这分为两种情况:
取决于子类是否覆盖父类方法.如果子类覆盖父类方法,则执行子类方法;
如果没有覆盖,则执行父类方法.
在编译时,仅仅依据对象所属的类,系统无法确定到底应该执行那个类的方法,只有运行时才能确定,因此这是运行时多态.
父类对象并不能执行所有的子类方法,只能执行那些父类中声明\子类覆盖的子类方法.


阅读更多
文章标签: 多态
个人分类: Java学习
上一篇java继承与重写
下一篇抽象与接口0418
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭