java继承中的方法重写
题目:
1、编写java程序,分析如下需求,写出你分析的类有哪些,以及功能。最后写一个测试类,针对每个类的功能进行测试。
动物园里有很多种动物:
比如说,狗,猫等。
狗有姓名和年龄,猫也有姓名和年龄。
狗有跑步的方法,猫也有跑步的方法。而且都仅仅是跑步。
狗有吃饭的方法,猫也有吃饭的方法。只不过,狗吃骨头,猫吃鱼。
请用所学知识,对这个问题进行解决。
分析:
父类:Animal
成员变量:String name、int age;
成员方法:run()、eat();
子类:Dog、Cat
重写方法:run();
特有方法:eat(“骨头”)、eat(“鱼”);
测试类:DemoAnimal
方法重写
父类有方法A,子类为实现自身特殊化需求,对父类的方法进行改写的手段,也是同名,区别是一个是父类的方法,一个是子类的方法(参数也要一样)。
方法重写的注意事项:
1、必须保证父子类之间方法的名称相同,参数列表也相同。
@Override:写在方法前面,用来检测是不是有效的正确覆盖重写
这个注释就算不写,只要满足要求,也是正确的方法重写。
2、子类方法的放回值必须【小于等于父类方法的返回范围】。
小扩展提示:java.lang.Object类是所有类的公共最高父类(祖宗类),java.lang.String是Object的子类。
3、子类方法的权限必须【大于等于】父类方法的权限修饰符。
小扩展提示:public > protected > (default) > private
备注:(default)不是关键字default,而是什么都不写,留空。
java 代码
父类:Animal
public class Animal {
String name;
int age;
public void show(){
System.out.println("动物:"+name+"年龄:"+age);
}
public void run(){
System.out.println(name+"会跑步");
}
public void eat(){
System.out.println(name+"吃东西");
}
}
子类:Dog
public class Dog extends Animal {
@Override
public void eat(){
System.out.println(name+"吃骨头");
}
}
子类:Cat
public class Cat extends Animal{
@Override
public void eat() {
System.out.println(name+"吃鱼");
}
}
测试类:demoAnimal
public class demoAnimal {
public static void main(String[] args) {
Dog dog = new Dog();
dog.name = "dog";
dog.age = 3;
dog.show();
dog.run();
dog.eat();
System.out.println("=======");
Cat cat = new Cat();
cat.name = "cat";
cat.age = 2;
cat.show();
cat.eat();
cat.run();
}
}
运行结果
Memorial Day is 356 days |