接上一节内容……
方法的重写
如果想在子类InheritDog类中创建自己的eat方法,需要对父类InheritAnimal类中的eat方法进行重写。
方法重写要遵循以下几个原则:
* 1、有继承关系的子类中
* 2、方法名相同,参数列表相同(参数顺序、个数、类型),方法返回值类型与父类兼容
* 3、访问修饰符,子类中方法的重写访问修饰符访问范围需要大于等于父类的访问范围
* 4、与方法的参数名无关
在InheritDog类进行方法重写:
public void eat(){
System.out.println(this.getName()+"最近没有食欲");
}
测试:
package java_test;
import java_animal.InheritCat;
import java_animal.InheritDog;
public class AnimalTest {
public static void main(String[] args) {
InheritCat one = new InheritCat();
one.setName("花花");
one.setSpecies("中华田园猫");
one.eat();
one.run();
System.out.println("=========================================");
InheritDog two = new InheritDog();
two.setName("妞妞");
two.setMonth(2);
two.eat();
two.sleep();
输出:
花花在吃东西
花花是一只中华田园猫,它在快乐的奔跑
=========================================
妞妞最近没有食欲
妞妞现在2个月大,它在睡觉
总结:当子类重写父类方法后,子类对象调用的是重写后的方法。
根据上面说的第四个原则对其进行验证:
分别在父类和子类中添加带参的eat方法:
public void eat(String name){
System.out.println(name+"在吃东西");
}
public void eat(String name1){
System.out.println(name1+"最近没有食欲");
}
测试:
two.eat("凡凡");
输出:
凡凡最近没有食欲
可看到调用的依然是子类中的带参方法,即与方法的参数名无关。
此外,在子类中也可以定义与父类重名的属性,而且同样是调用子类中的属性。
访问修饰符
分为四类:
/**
* private:只允许在本类中进行访问
* public:允许在任意位置访问
* protected:允许在当前类、同包子类/非子类调用、跨包子类调用;跨包非子类不允许
* 默认:允许在当前类、同包子类/非子类调用;跨包子类/非子类不允许
*/

本文探讨了Java中的方法重写,强调了重写的原则,包括继承关系、方法名和参数列表的一致性、返回值的兼容性以及访问修饰符的要求。通过示例展示了如何在子类中重写父类的方法,并验证了方法参数名不影响重写。同时,介绍了Java的访问修饰符的四种类型及其使用场景。

474

被折叠的 条评论
为什么被折叠?



