Java-override重写

package cn.gg.oo2;
public class TestOverride {
public static void main(String[] args){
	Horse h = new Horse();
	h.run();
}

}


class Vehicle{
public void run(){
	System.out.println("跑..跑..跑..");
}

public void stop(){
	System.out.println("停!!");
}

public Person WhoIsPsg(){
	return new Person();
}
}

class Horse extends Vehicle{
public void run(){
	System.out.println("四蹄翻飞,得得得...");
}

public Boy WhoIsPsg(){//返回值小于等于父类的类型,虽然语言上说是父亲大于孩子,但	是	孩子继承了父亲后可以后父亲没有的方法和属性,所以返回值只能范围更广,而不能更小
	return new Boy();//如果父类和子类中的Person和Boy交换,会报错,返回值无法兼容
}
}

方法的重写需要符合下面的三个要点:
1.“==”: 方法名、形参列表相同。也就是说如果不一样,比如在Horse 类里定义的方法run改为run1,那么会造成在main函数里调用时run就是调用的父类Vehicle里的run。也就是说,方法名、形参名之一有不同,则相当于子类在继承父类的基础上重新写了一个方法,并不是“重写”。
2.“≤”:返回值类型和声明异常类型,子类小于等于父类。继承关系
Horse继承了Vehicle,Horse里有Vehicle类中没有的部分;所以在Horese重写的时候,返回值的类型也必须有类似父子关系的继承关系
3.“≥”: 访问权限,子类大于等于父类

猜你喜欢

转载自blog.csdn.net/li_xunhuan/article/details/88914150
今日推荐