Java作业练习_实验七接口与实现(小白学习记录,仅供参考,有错指出)

文章介绍了Java编程中的接口、继承、多态和接口实现的实例,涉及接口定义、接口实现类、抽象方法、静态常量及编译错误等内容。通过几个编程题展示了如何使用这些概念来创建类和实现特定功能。
摘要由CSDN通过智能技术生成

第一题

1.【问答题】 (20分)
编程题。
(1)interface Runner {
public void run();
}

(2)定义Runner接口的子接口
interface Hunter extends Runner {
public void hunt();
}
(3)定义实现类猎豹实现Hunter接口,具有奔跑和捕猎功能。
class Cheetah implements Hunter {
。。。补充代码//实现接口中的所有抽象方法
}
(4)编写主类,在main方法中编写多态的代码。输出猎豹在奔跑。猎豹在捕猎。

Runner.java:包含接口Runner的定义。

interface Runner {
    public void run();
}

Hunter.java:包含接口Hunter的定义,它继承自Runner接口。

interface Hunter extends Runner {
    public void hunt();
}

Cheetah.java:包含类Cheetah的定义,它实现了Hunter接口。

class Cheetah implements Hunter {
    @Override
    public void run() {
        System.out.println("猎豹在奔跑");
    }

    @Override
    public void hunt() {
        System.out.println("猎豹在捕猎");
    }
}

PolymorphismExample.java:包含主类PolymorphismExample的定义,其中包含了main方法。

public class PolymorphismExample {
    public static void main(String[] args) {
        Hunter cheetah = new Cheetah();

        cheetah.run(); // 猎豹在奔跑
        cheetah.hunt(); // 猎豹在捕猎
    }
}

运行结果

猎豹在奔跑
猎豹在捕猎

第二题

编程题。

1定义计算平均值的接口ComputerAverage,public double average(double score[]);
2定义接口的实现类,重写接口的方法,计算分数的平均分,累加求和除以个数。
3编写测试类,在主方法中测试average方法,测试一组数据10,20,30,40,50,60,70,80,90,100。
ComputerAverage.java:包含计算平均值的接口定义。

interface ComputerAverage {
    public double average(double score[]);
}

AverageCalculator.java:包含实现接口的实现类,重写了接口的方法,计算分数的平均值。

class AverageCalculator implements ComputerAverage {
    @Override
    public double average(double score[]) {
        double sum = 0;
        for (double s : score) {
            sum += s;
        }
        return sum / score.length;
    }
}

TestAverage.java:包含测试类,其中的main方法用于测试average方法

public class TestAverage {
    public static void main(String[] args) {
        ComputerAverage calculator = new AverageCalculator();

        double[] scores = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
        double average = calculator.average(scores);

        System.out.println("平均分数为: " + average);
    }
}

运行结果:

平均分数为: 55.0

第三题

3.【问答题】 (20分)
根据下面需求,编写代码。
(1)定义一个乐器Instrument接口,接口中包括一个 公共的抽象的方法void play(),
(2)设计管乐器Wind、打击乐器Percussion、弦乐器Stringed等实现类实现该接口,
(3)在主类的main方法中,分别创建Wind、Percussion、Stringed对象,将对象的引用存入一个类型为Instrument的数组中,遍历数组,将数组中的各个乐器对象调用play()方法。
Instrument.java:定义乐器接口Instrument,包含一个抽象方法void play()。

interface Instrument {
    public void play();
}

Wind.java:定义管乐器类Wind,实现Instrument接口,实现play()方法。

class Wind implements Instrument {
    @Override
    public void play() {
        System.out.println("演奏管乐器");
    }
}

Percussion.java:定义打击乐器类Percussion,实现Instrument接口,实现play()方法。

class Percussion implements Instrument {
    @Override
    public void play() {
        System.out.println("演奏打击乐器");
    }
}

Stringed.java:定义弦乐器类Stringed,实现Instrument接口,实现play()方法。

class Stringed implements Instrument {
    @Override
    public void play() {
        System.out.println("演奏弦乐器");
    }
}

MainClass.java:包含主类MainClass,其中的main方法中创建各个乐器对象,并将它们的引用存入Instrument类型的数组中,遍历数组并调用play()方法。

public class MainClass {
    public static void main(String[] args) {
        Instrument[] instruments = new Instrument[3];
        instruments[0] = new Wind();
        instruments[1] = new Percussion();
        instruments[2] = new Stringed();

        for (Instrument instrument : instruments) {
            instrument.play();
        }
    }
}

运行结果

演奏管乐器
演奏打击乐器
演奏弦乐器

第四题

根据下面需求,编写代码。
(1)定义手机类,Phone:手机号码String number;
拨打电话call(String number)
接听电话answer()
(2)定义Computer接口,Computer:上网surf();
玩游戏playGame();
看视频playVideo()
(3)定义导航接口,Avigraph:定位orientation();
导航navigate();

(4)创建一个智能手机(SmartPhone),智能手机是(extends)手机(Phone)的子类,同时又能实现(implements)电脑(Computer)和导航仪(Avigraph)的功能,结合继承和接口实现智能手机的多个功能。
(5)在主类的main()中测试智能手机的多个功能。

Phone.java:定义手机类Phone,包含手机号码属性和拨打电话、接听电话的方法。

class Phone {
    private String number;

    public Phone(String number) {
        this.number = number;
    }

    public void call(String number) {
        System.out.println("拨打电话给:" + number);
    }

    public void answer() {
        System.out.println("接听电话");
    }
}

Computer.java:定义电脑接口Computer,包含上网、玩游戏和看视频的方法。

interface Computer {
    public void surf();
    public void playGame();
    public void playVideo();
}

Avigraph.java:定义导航接口Avigraph,包含定位和导航的方法。

interface Avigraph {
    public void orientation();
    public void navigate();
}

SmartPhone.java:定义智能手机类SmartPhone,继承自Phone类,并实现Computer和Avigraph接口的功能。

class SmartPhone extends Phone implements Computer, Avigraph {
    public SmartPhone(String number) {
        super(number);
    }

    @Override
    public void surf() {
        System.out.println("使用智能手机上网");
    }

    @Override
    public void playGame() {
        System.out.println("使用智能手机玩游戏");
    }

    @Override
    public void playVideo() {
        System.out.println("使用智能手机播放视频");
    }

    @Override
    public void orientation() {
        System.out.println("使用智能手机进行定位");
    }

    @Override
    public void navigate() {
        System.out.println("使用智能手机进行导航");
    }
}

MainClass.java:包含主类MainClass,其中的main方法中创建智能手机对象,并测试智能手机的多个功能。

public class MainClass {
    public static void main(String[] args) {
        SmartPhone smartphone = new SmartPhone("123456789");

        smartphone.call("987654321");
        smartphone.answer();
        smartphone.surf();
        smartphone.playGame();
        smartphone.playVideo();
        smartphone.orientation();
        smartphone.navigate();
    }
}

运行结果:

拨打电话给:987654321
接听电话
使用智能手机上网
使用智能手机玩游戏
使用智能手机播放视频
使用智能手机进行定位
使用智能手机进行导航

第五题

5.【问答题】 (10分)
下面程序有错误,请修改正确。
输出结果为314.00

//定义接口

interface Shape{
double PI;
double area();

}

//编写接口的实现类
class Circle extends Shape{
private double radius;
public Circle(double radius) {
this.radius = radius;
}
double area(){
return PIradiusradius;
}
}
//编写测试类
public class MyTest {
public static void main(String[] args) {
Circle circle=new Circle(10);
System.out.printf(“%.2f\n”,circle.area());
}
}

// 定义接口
interface Shape {
    double PI = 3.14; // 添加初始值

    double area();
}

// 编写接口的实现类
class Circle implements Shape {
    private double radius;

    public Circle(double radius) {
        this.radius = radius;
    }

    public double area() {
        return PI * radius * radius;
    }
}

// 编写测试类
public class MyTest {
    public static void main(String[] args) {
        Circle circle = new Circle(10);
        System.out.printf("%.2f\n", circle.area());
    }
}

运行结果:

314.00

第六题

6.【问答题】 (10分)
1.证明一个接口的属性在缺省情况下是static和final的。

interface MyInterface {
    int MY_CONSTANT = 100;
}

class MyClass implements MyInterface {
    // 编译错误:无法为最终变量MY_CONSTANT分配值
    // MY_CONSTANT = 200;

    public void printConstant() {
        System.out.println("Constant value: " + MY_CONSTANT);
    }
}

public class MainClass {
    public static void main(String[] args) {
        MyClass myObj = new MyClass();
        myObj.printConstant();

        // 编译错误:无法为最终变量MY_CONSTANT分配值
        // MyInterface.MY_CONSTANT = 300;
    }
}

免责声明

本文章所有的图片以及代码等仅作为学习使用,不作为商业目的,如有侵权请联系我删除!
所提供的代码仅供参考,有很多不足请自行补充!

  • 23
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
好的,我可以为您提供一些 Java 接口练习题,供您练习和巩固相关知识。以下是一些题目: 1. 定义一个接口 Animal,包含方法 eat() 和 sleep(),同时定义一个实现接口的类 Dog 和 Cat。要求 Dog 和 Cat 实现 eat() 和 sleep() 方法,其中 eat() 方法输出 "I am a dog/cat, and I am eating",sleep() 方法输出 "I am a dog/cat, and I am sleeping"。 2. 定义一个接口 Shape,包含方法 getArea() 和 getPerimeter(),同时定义一个实现接口的类 Rectangle 和 Circle。要求 Rectangle 和 Circle 实现 getArea() 和 getPerimeter() 方法,其中 getArea() 方法返回形状的面积,getPerimeter() 方法返回形状的周长。 3. 定义一个接口 Calculator,包含方法 add()、subtract()、multiply() 和 divide(),同时定义一个实现接口的类 BasicCalculator 和 ScientificCalculator。要求 BasicCalculator 和 ScientificCalculator 实现 add()、subtract()、multiply() 和 divide() 方法,其中 BasicCalculator 实现的方法为简单的四则运算,ScientificCalculator 实现的方法为科学计算器常用的函数,例如 sin、cos、tan 等。 4. 定义一个接口 Sortable,包含方法 sort(),同时定义一个实现接口的类 BubbleSort 和 QuickSort。要求 BubbleSort 和 QuickSort 实现 sort() 方法,其中 BubbleSort 实现冒泡排序,QuickSort 实现快速排序。 希望这些题目能够帮助您巩固 Java 接口的相关知识。如果您有任何问题或需要更多帮助,请随时告诉我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FJSAY

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值