1、向上造型:
超类型的引用指向派生类的对象;
能点出来什么,看引用的类型
public class UploadDemo{
public static void main(String[ ] argd){
Aoo o1=new Aoo( );
o1.a=1;
//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{
init b;
void test( ){
}
}
2、方法的重写:重新写
发生在父子类中,方法名相同,参数列表不同;
重写方法被调用时,看对象的类型;
class 餐馆{
void 做餐( ){ 做中餐 }
}
//1)我还是想做中餐-------不需要重写
class Aoo extends 餐馆{
}
//2)我想改做西餐-----------需要重写
class Aoo extends 餐馆{
void 做餐( ){ 做西餐 }
}
//3)我想在中餐之上加入西餐--------需要重写(先super中餐,再加入西餐)
class Aoo extends 餐馆{
void 做餐( ){super.做餐( );+做西餐}
}
#重写遵循“两同两小一大”原则:
两同:方法名相同;参数列表相同;
两小:
#派生类方法的返回值类型小于或等于超类的:
void 和基本类型时,必须相等;
引用类型时,小于或等于;
派生类方法抛出的异常小于或等于超类的;
#一大:
派生类方法的访问权限大于或者等于超类的
3、重写与重载的区别:
重写(override):发生在父子类中,方法名相同,参数列表相同
重载(overload):发生在同一类中,方法名相同,参数列表不同