方法重写
在继承关系中,子类的方法签名和父类的方法签名一致,或子类的方法访问修饰符大于父类的方法访问修饰符这时候,子类的方法就重写了父类的方法。
方法重写时子类的返回值类型和父类的返回值类型一致,或者子类的返回值类型是父类返回方法返回值类型的子类也是方法重写。
父类方法如下
public void eat(){
System.out.println("动物都会吃");
}
protected void run(){
}
private void jump(){
}
public Animal getObj(){
return null;
}
子类方法如下:
/子类重写父类的方法
@Override
public void eat(){
System.out.println("sss"); //属于方法重写,可以继承,且方法签名和父类一致
}
@Override
protected void run(){ //属于重写,可以继承,且方法签名和父类一致
}
@Override
public void run(){ //属于重写,可以继承,子类的访问修饰符大于父类访问修饰符
}
@Override
public Dog getObj(){ //属于重写,可以继承,子类方法的返回值类型是父类方法返回值类型的子类
return null;
}
public void jump(){ //不属于重写,父类的私有属性和方法不能被继承,因此不能重写。
}
方法重载和方法重写的区别
方法重写必须在***继承关系***中,子类的方法签名和父类的一致(访问修饰符大于等于父类访问修饰符,返回值类型 和父类一样或是父类返回值类型的子类,方法名称一致,参数列表一致) 和参数的名称没有关系,只和类型有关系
方法重载必须在一个类中,方法名称相同,参数列表不同,和返回值无关,和访问修饰符没有关系,和参数的名称没有关系
构造函数不能被继承,构造方法也不能被重写,构造方法可以重载