- 向上造型
- 作用:减少代码复用,扩展性好,为所有的派生类提供统一的类型
- 语法:超类型 的引用指向派生类的对象
- 能点出来什么看引用类型,new谁就调谁的构造
Person p = new Student();
package ooday04;
//向上造型的演示
public class UploadDemo {
public static void main(String[] args) {
Aoo o1 = new Aoo();
o1.a = 1;
o1.show();
//o1.b = 2; //编译错误,超类不能访问派生类的
//o1.test(); //编译错误
Boo o2 = new Boo();
o2.b = 1;
o2.test();
o2.a = 2; //正确,派生类可以访问超类的
o2.show(); //正确
Aoo o3 = new Boo(); //向上造型
o3.a = 1;
o3.show();
//o3.b = 2; //编译错误,能点出来什么,看引用的类型
//o3.test(); //编译错误
}
}
class Aoo{
int a;
void show(){
}
}
class Boo extends Aoo{
int b;
void test(){
}
}
- 方法的重写(override/overriding)
-
发生在父子类中,方法名相同,参数列表相同
-
重写方法被调用时,看对象的类型
-
-
重写需要遵循"两同两小一大"原则:-------一般都是一模一样的
-
两同:
-
方法名相同
-
参数列表相同
-
-
两小:
-
派生类方法的返回值类型小于或等于超类方法的
-
void和基本类型时,必须相同
-
引用类型时,小于或等于
-
-
派生类方法抛出的异常小于或等于超类方法的---------------API时讲
-
-
一大:
-
派生类方法的访问权限大于或等于超类方法的
-
-
- 重写与重载的区别:
-
重写(override/overriding):
-
发生在父子类中,方法名相同,参数列表相同
-
-
重载(overload/overloading):
-
发生在同一类中,方法名相同,参数列表不同
-
-