当前位置: 首页 > news >正文

Java基础编程练习第32题-定义接口(Biology、Animal)、类(Person)、子类(Pupil)(PTA选题)

一、解题

通过这道题我们可以深入学习Java语言的继承,接口的定义。

题目:

分析:

此题其实和前面我们28,29题没有相差很大,只不过在类的基础上我们需要学习接口的定义,以及继承是如何实现的。我们直接对照代码逐句分析:

import java.util.Scanner;

public class Main {
    public static void main(String[] args){
        Scanner scanner = new Scanner(System.in);
        Pupil zhangsan = new Pupil();


        String schoolName = scanner.nextLine();
        zhangsan.setSchool(schoolName);

        // 输出学校信息
        System.out.println("我的学校是" + zhangsan.getSchool());
       
        // 调用方法,直接调用
        zhangsan.breathe();
        zhangsan.eat();
        zhangsan.sleep();
        zhangsan.think();
    }
}
//定义Biology接口
interface Biology{
    void breathe();
}
//定义Animal接口
interface Animal{
    void eat();
    void sleep();
}

//定义Person类实现Biology和Animal接口

class Person implements Biology,Animal{
    @Override
    public void breathe() {
        System.out.println("我喜欢呼吸新鲜空气");
    }
    public void eat() {
        System.out.println("我会按时吃饭");
    }

    public void sleep() {
        System.out.println("早睡早起身体好");
    }
//这个是Person类自己的方法
    public void think() {
        System.out.println("我喜欢思考");
    }
}

//定义子类Pupil类继承Person类
//根据题意定义Person类
class Pupil extends Person{
    private String school;

    public void setSchool(String school){
        this.school = school;
    }
    public String getSchool() {
        return school;
    }
}

二、接口

接口的定义

在Java中,接口(Interface)是一种引用类型,类似于类,用于存放抽象方法和静态变量。接口定义了一个规范,规范实现接口的类应具备哪些方法。

接口的特点

1.接口中只能定义抽象方法和静态常量。抽象方法是没有方法体的方法,静态常量是不可变的变量。

例如:

public interface Animal {
    void eat();
    void sound();
}

这里eat();sound();都没有具体实现,没有方法体。

抽象方法:没有实现体的方法,既它没有花括号和方法体,只有方法签名和一个分号

例如:


    // 抽象方法
    void makeSound();
    
    // 非抽象方法
    void sleep() {
        System.out.println("Animal is sleeping");
    }

2.接口不能被实例化,但可以被实现(implements关键字)或者继承(extends关键字)。

3.一个类可以实现多个接口。

接口的使用

定义接口的基本语法:

[修饰符] interface 接口名称 {
    // 抽象方法
    [返回类型] 方法名称([参数列表]);
    
    // 静态常量
    [修饰符] 类型 常量名称 = 常量值;
    
    // Java 8+ 默认方法
    default [返回类型] 方法名称([参数列表]) {
        // 方法体
    }
    
    // Java 8+ 静态方法
    static [返回类型] 方法名称([参数列表]) {
        // 方法体
    }
}

一个类通过implements关键字实现接口,并必须实现接口中所有的抽象方法。

public class Dog implements Animal {
    public void eat() {
        System.out.println("Dog eats.");
    }

    public void sound() {
        System.out.println("Dog barks.");
    }
}

在这个例子中,Dog类实现了Animal接口,并提供了eat和sound方法的具体实现。

三、继承

在面向对象学习中已经学习过继承了,这里不过多介绍了。

在Java中定义继承的基本语法;

class 父类 {
    // 父类的字段和方法
}

class 子类 extends 父类 {
    // 子类新增的字段和方法
    // 可以选择覆盖父类的方法
}

在这个语法中,extends关键字用于指定子类要继承的父类。

举个例子:

// 定义一个父类
class Vehicle {
    // 父类的字段
    protected String brand = "Ford";  // Vehicle 的品牌

    // 父类的方法
    public void honk() {
        System.out.println("Tuut, tuut!");
    }
}

// 定义一个子类,继承自 Vehicle
class Car extends Vehicle {
    // 子类新增的字段
    private String modelName = "Mustang";  // Car 的模型名称

    // 子类的方法
    public void displayInformation() {
        System.out.println("Model: " + modelName + "; Brand: " + brand);
    }
}

// 主类
public class Main {
    public static void main(String[] args) {
        // 创建 Car 类的实例
        Car myCar = new Car();

        // 调用继承自父类的方法
        myCar.honk();

        // 调用子类自己的方法
        myCar.displayInformation();
    }
}

相关文章:

  • Flask-WTForms表单验证中常见的正则表达式
  • 同一子网通信
  • 操作系统知识点31
  • 【漫话机器学习系列】142.Sigmoid 激活函数(Sigmoid Activation Function)
  • Kubernetes 中metrics-server的采集周期,采集链路是什么样的?
  • 【Hestia Project 数据集】美国化石燃料 CO₂ 排放数据
  • 《论语别裁》第01章 学而(27) 无所适从的礼俗
  • uboot中的.config文件
  • superset部署记录
  • min_element用法
  • pytorch快速入门——手写数字分类GPU加速
  • python-数据类型字符串和列表
  • 【Qt】qrc机制介绍
  • Java实现【将Markdown格式文本转换为纯文本】
  • Python跳动的爱心
  • go数据结构笔记
  • Spring(5)——IoC DI
  • DevExpress WinForms 中 SwiftPlot 图表控件的使用指南
  • DeepSeek:技术教育领域的AI变革者——从理论到实践的全面解析
  • 修改 Macbook 终端窗口的显示信息
  • 2025年第一批“闯中人”已经准备好了
  • 美参议院通过新任美国驻华大使任命,外交部回应
  • 百年传承,再启新程,参天中国迎来2.0时代
  • 连演三场,歌剧《义勇军进行曲》在上海西岸大剧院上演
  • 十四届全国人大常委会第十五次会议继续审议民营经济促进法草案
  • 日本大米价格连续16周上涨,再创最高纪录