java继承中的方法重写

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
I miss you
xiaokeai

猜你喜欢

转载自blog.csdn.net/weixin_42914989/article/details/108703841