Java练习题——抽象类、方法以及接口

简介: 由于三种动物都有共同属性:名字和属性,并且有共同行为:吃,所以只需要在共同父类(Animal)中编写标准Javabean类即可

一、前言


一道题检测你是否掌握了抽象类、抽象方法和接口,相关知识点请在【Java进阶学习篇】中点击查看


二、题目


请编写带有抽象类标准的Javabean类,要求如下



属性
行为
青蛙Frog 名字(小青蛙)、年龄(1) 吃虫子、蛙泳
狗Dog 名字(小狗)、年龄(2) 吃骨头、狗刨式游泳
兔子 名字(小白兔)、年龄(3) 吃胡萝卜


三、题目分析


1.画图


6cda02954b25421888dec5d17011d9cc.png


2.接口


由于兔子不会游泳,并且青蛙和狗都是不同泳姿,所以swim是接口


public interface Swim {
    public abstract void swim();
}


3.抽象方法


由于三种动物都有吃的行为,但是吃的不一样,所以eat是抽象方法


public abstract void eat();


4.继承关系


由于三种动物都有共同属性:名字和属性,并且有共同行为:吃,所以只需要在共同父类(Animal)中编写标准Javabean类即可


5.重写方法


在子类中,对于接口和抽象方法要进行方法体的重写,且要继承属性


四、代码实现


1.父类


public abstract class Animal {
    private String name;
    private int age;
    public Animal(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public Animal() {
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public abstract void eat();
}


2.接口


public interface Swim {
    public abstract void swim();
}


3.青蛙


public class Frog extends Animal implements Swim {
    public Frog(String name, int age) {
        super(name, age);
    }
    @Override
    public void eat() {
        System.out.println("吃虫子");
    }
    @Override
    public void swim() {
        System.out.println("蛙泳");
    }
}


4.小狗


public class Dog extends Animal implements Swim {
    public Dog(String name, int age) {
        super(name, age);
    }
    @Override
    public void eat() {
        System.out.println("吃骨头");
    }
    @Override
    public void swim() {
        System.out.println("狗刨式游泳");
    }
}


5.兔子


public class Rabbit extends Animal{
    public Rabbit(String name, int age) {
        super(name, age);
    }
    @Override
    public void eat() {
        System.out.println("吃胡萝卜");
    }
}


6.测试类


public class Test {
    public static void main(String[] args) {
        Frog f = new Frog("小青蛙",1);
        System.out.println(f.getName() + "今年" + f.getAge() + "岁\n它的行为有:");
        f.eat();
        f.swim();
        System.out.println("---------------");
        Dog g = new Dog("小狗",2);
        System.out.println(g.getName() + "今年" + g.getAge() + "岁\n它的行为有:");
        g.eat();
        g.swim();
        System.out.println("---------------");
        Rabbit r = new Rabbit("小白兔",3);
        System.out.println(r.getName() + "今年" + r.getAge() + "岁\n它的行为有:");
        r.eat();
    }
}


五、测试代码


6590c815b6784a75b729844adc463ace.png


六、结语


在写子类时一定要记得重写方法,并且要继承属性,否则在测试类中将无法给子类对象赋值

相关文章
|
10天前
|
Java
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
本文介绍了Java中抽象类和抽象方法的使用,以及ArrayList的基本操作,包括添加、获取、删除元素和判断列表是否为空。
13 2
java基础(12)抽象类以及抽象方法abstract以及ArrayList对象使用
|
9天前
|
Java
Java 抽象类详解
在 Java 中,抽象类是一种特殊类,用于提供基础定义并派生具体子类,支持代码复用。它包含抽象方法(无实现)和具体方法(有实现),不能被实例化,需用 `abstract` 关键字定义。子类必须实现所有抽象方法,除非子类也是抽象类。抽象类可用于定义模板或框架,确保子类实现特定方法。通过示例展示了如何定义抽象类 `Animal` 及其子类 `Dog` 和 `Cat`,并在主类中调用相关方法。使用抽象类可以提高代码复用性和设计质量,但也可能增加维护难度和性能开销。
|
7天前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
18 4
|
6天前
|
Java 测试技术
Java接口的生产环境应用注意点
在Java生产环境中,合理使用接口对提升代码质量至关重要。设计接口时应遵循单一职责原则,采用清晰命名,并控制方法数量。默认方法应谨慎使用,避免与实现类产生冲突。通过版本化管理接口更新,确保向后兼容。实现接口时需明确行为,保持实现与接口分离,利用多态增强灵活性。关注性能影响,适当文档注释及充分测试确保接口稳定可靠。综合运用这些策略,可以显著提高系统的可扩展性和维护性。
|
6天前
|
Java
Java 接口的简化理解
Java 接口是一种强大的概念,用于定义方法签名而非具体实现,作为行为规范,强调功能而非实现细节。接口是特殊的引用类型,包含常量和方法签名。其特点包括:无实现方法体、支持多重继承、内置常量定义。通过示例展示了如何定义和实现接口,以及如何通过接口引用调用实现类的方法。接口的应用场景包括抽象化、插件架构和松耦合设计。从 Java 8 起,接口还支持默认方法和静态方法,进一步增强了其灵活性和扩展性。理解接口是 Java 编程的基础之一。
|
9天前
|
安全 Java API
Java根据URL获取文件内容的实现方法
此示例展示了如何安全、有效地根据URL获取文件内容。它不仅展现了处理网络资源的基本技巧,还体现了良好的异常处理实践。在实际开发中,根据项目需求,你可能还需要添加额外的功能,如设置连接超时、处理HTTP响应码等。
44 4
|
10天前
|
安全 Java
java调用方法
java调用方法
18 4
|
7天前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
Java
Java接口和抽象类
Java接口和抽象类
81 0
|
2月前
|
设计模式 Java
【惊天揭秘】Java编程绝技大曝光:接口、抽象类、静态类与非静态类的神秘面纱终被揭开!
【8月更文挑战第22天】Java支持面向对象编程,通过接口、抽象类、静态类(如枚举与工具类)及普通类实现设计原则。接口定义行为规范,允许多重继承;抽象类含未实现的抽象方法,需子类完成;静态类常为工具类,提供静态方法;普通类则实例化对象。恰当运用这些结构能提升程序质量。
33 2
下一篇
无影云桌面