4. Java 2 SE 方法重写 & 多态

来源:互联网 发布:入驻淘宝商城费用 编辑:程序博客网 时间:2024/05/16 05:23

1. 方法重写(Override):子类与父类的方法返回类型一样、方法名称一样,参数一样,这样子类和父类的方法构成了重写关系。


方法重写与方法重载的关系:

重载发生在同一个类的内部的两个或多个方法。

重写发生在父类与子类之间


2. 当两个方法形成重写关系时,可以在子类的方法中通过 super.X() 形式调用父类的 X() 方法,其中 super.X() 不必放在第一行语句,因此此时父类对象已经构造完毕,先调用父类的 X() 方法还是先调用子类的 X() 方法是根据程序的逻辑决定的。



3.在定义一个类的时候,如果没有显示指定该类的父类,那么该类就会继承于java.lang.Object类(JDK提供的一个类,Object类是Java中所有类的直接或者间接父类)


4. 多态(Polymorphism):我们说子类就是父类(玫瑰是花,男人是人),因此多态的意思就是:父类型的引用可以指向子类型的对象。(可以参考Thinking in Java,Polymorphism一章,方法重写可以决定多态,方法重载决定不了多态)

比如:Parent parent = new Child();类型是Parent,指向Child对象,当使用多态方式调用方法时,首先检查父类中是否有 X() 方法,如果没有则编译错误;如果有,再去调用子类的 X() 方法

强制转换:向下类型转换,转换为指向的对象,如图



指向不一样,不能向下类型转换,还是那句话,指向谁,能转换成谁。如下图,本来指向ChildTwo,就不能转换为ChildOne:


(备注:这种情况,编译的时候不会报错,只会在运行的时候报错,这是一种运行的行为,不是编译的行为)


5. 一共有两种类型的强制类型转换:

a)向上类型转换(upcast):比如说将子类转换为父类。对于向上类型转换,不需要显示指定。

b) 向下类型转换(downcast):比如将父类型转换为子类型,必须要显式指定(必须要使用强制类型转换)。


什么时候需要强制类型转换:子类里面有,父类没有的时候,而需要用子类的方法的时候,需要强制类型转换

例备注:if(args[0].equal("1")),运行时输入什么值,就执行哪个语句,如下例



此例执行 a = new C();


多态待续。。。


0 0
原创粉丝点击