java练习题之接口interface练习

1:关于接口和抽象类,下列说法正确的是(ACD)

A.抽象类可以有构造方法,接口没有构造方法

B.抽象类可以有属性,接口没有属性

C.抽象类可以有非抽象方法,接口中都是抽象方法    1.8之后

D.抽象类和接口都不能单独创建对象        抽象类有构造方法  可以声明引用但不能创建对象,  接口无构造方法,但是也可以声明引用

2:下列哪一种叙述是正确的(CD)

A.一个Java 类只能实现一个接口

B.一个Java 类不能同时继承一个类和实现一个接口

C.一个Java 类可以实现多个接口

D.一个Java 类只能直接继承一个类

3: 下列关于接口的说法错误的是(B)

A. 接口不能创建对象,可以声明引用

B. 接口中可以定义构造方法

C. 接口中的属性都是公开、静态常量

D. 接口中的方法都是公开、抽象方法

4:接口和抽象类的区别?

抽象类是类(abstract class) 有构造方法 需要子类继承 extends 里边可以有抽象方法也可以有非抽象的方法,单继承

接口(interface)无构造方法 可以说是都是抽象方法的抽象类 ,全是公有的抽象方法, 需要实现,implements   实现可以多实现   

5:根据要求完成以下代码:

interface IA{

void m1();

void m2();

}

//写出实现类,类名为MyClass

class MyClass implements IA{

public void m1(){}

public void m2(){}

}

6:阅读以下代码

interface IA{

void m1();

void m2();

     }

     interface IB extends IA{

void m3();

     }

class MyClass implements IB{

public void m1(){}

public void m2(){}

public void m3(){}

public void m4(){}

}

     在主函数中 IA ia=new MyClass();以ia可以调用方法是()

A. m1     B. m2     C. m3      D. m4

7:Java中,以下关于继承的叙述正确的是(A)

A. 类只允许继承

B. 一个类只能实现一个接口

C. 一个类不能同时继承一个类和实现多个接口

D. 接口只允许单一继承。

8:仔细阅读以下代码,有几处错误代码?并修改正确。

System.out.println(ia.a);

9:仔细阅读以下代码,根据语法将代码补全。

abstract       public void m2(){}

10:仔细阅读以下代码,根据要求完成程序。

如果有一个类ClassE 实现ID 接口,如果不希望 ClassE 是抽象的,则需要实现哪些方法?

ma()   mb()   mc()    md()

将以下代码补充完整:

IA ia=(IA)ic;

ia.ma();

IB ib=(IB)ic;

ib.mb();

ic.mc();

ID id=(ID)ic;

id.md();

写出以下程序输出的结果:

false

              false

   true

   false

   true

11:仔细阅读以下代码,写出程序输出的结果。

true true true true

12:仔细阅读以下代码,写出程序运行输出结果。

Red Light shine in Red

Yellow Light shine in Yellow

Green Light shone in Green

13:仔细阅读以下代码,写出程序输出的结果。

TeacherA   teach   Java

TeacherB   teach   Java

14:仔细阅读以下代码:

需要一个实现ServiceInterface 接口的类MyService。

①第一种方式可以让 MyService 实现ServiceInterface 接口,即: class MyService implements ServiceInterface

②第二种方式可以让 MyService 继承AbstractService 类,即: class MyService extends AbstractService

请问:这两种方式有什么区别?AbstractService 类有什么作用?

class MyService  implements ServiceInterface{

          public  void doService1(){}

public void doService2(){}

public void doService3(){}

           }  

           一种是实体类直接继承接口,需要实现接口中所有的方法,比较麻烦,且接口中可能会有实体类不需要的抽象方法,如果实体类实现接口,就必须实方法

         一种是缺省适配器模式由抽象类实现接口,抽象类中可以有抽象和非抽象方法,起到一个过滤子类不需要的方法的作用,把子类不需要的方法实例化,子类再继承抽象类就不需要 重写无用方法了

15:仔细阅读以下代码,完成//1、//2、//3、//4 处程序。

Animal []as={new Cat,new Dog,new Wolf};

int count=0;

for(int i=0;i<as.length;i++){

 if(as[i] instanceof Dog){

as[i].eat();

as[i].play();

count++;

}else if(as[i] instanceof  Cat){

as[i].eat();

as[i].play();

count++

}else{

as[i].eat

count++

}

}

System.out.println(count);

16:编程:定义一个接口 MathTool,接口中有三个抽象方法如下:

“long fact(int m);”方法的功能为:求参数的阶乘

“long intPower(int m , int n)”方法的功能为:求m 的n 次方

“boolean findFactor(int m,int n)”方法的功能为:判断参数的和是否大于 100

定义类实现接口,编写应用程序,调用接口中的 3 个方法,并将调用方法的结果输出。

17:编程:把继承练习题中形状改为接口 

package com.by.homework3.figure;

public interface Figure {
    public abstract void qiuzhouchang();
    public abstract void qiumianji();
}



package com.by.homework3.figure;

public class Circle implements Figure{
    int banjin;

    public Circle(int banjin) {
        this.banjin = banjin;
    }

    @Override
    public void qiuzhouchang() {
        Double zhouchang=2*3.14*banjin;
        System.out.println("圆的周长:"+zhouchang);
    }

    @Override
    public void qiumianji() {
        Double mianji=3.14*banjin*banjin;
        System.out.println("圆的面积:"+mianji);
    }
}



package com.by.homework3.figure;

public class Square implements Figure{
    int bianchang;

    public Square(){

    }
    public Square(int bianchang) {
        this.bianchang = bianchang;
    }

    public void qiuzhouchang(){
        int zhouchang=bianchang*4;
        System.out.println("正方形的周长:"+zhouchang);
    }
    public void qiumianji(){
        int mianji=bianchang*bianchang;
        System.out.println("正方形的面积:"+mianji);
    }
}

18:定义一个接口MediaPlayer,表示一个家庭影院的设备,MediaPlayer中包含play(),stop(),open(),三个方法分别表示播放、停止和开仓功能。

MediaPlayer有三个实现类,分别是:DVDPlayer,表示DVD播放器;CDPlayer,表示CD播放器; TapePlayer,表示收音机(播放磁带)。

创建一个遥控器Controller类。该遥控器有三个频道,可以分别控制三个设备。部分代码如下:

要求:

①完成MediaPlayer接口及其实现类代码。

package com.by.homework6.mediaPlayer;

interface MediaPlayer{
    void play();
    void open();
    void stop();

}


class DVDPlayer implements MediaPlayer{
    @Override
    public void play() {

    }

    @Override
    public void open() {

    }

    @Override
    public void stop() {

    }
}

class CdPLayer implements MediaPlayer{
    @Override
    public void play() {

    }

    @Override
    public void open() {

    }

    @Override
    public void stop() {

    }
}

class TapePlayer implements MediaPlayer{
    @Override
    public void play() {

    }

    @Override
    public void open() {

    }

    @Override
    public void stop() {

    }
}




class Controller{
    private MediaPlayer[] players;
    public Controller(){

    }

    public void play(int i){
        players[i].play();
    }

}

public class MediaPlayerTest {
    public static void main(String[]args){

    }
}

②把Controller补充完整,完善其构造方法,并为其增加stop(int i)和open(int i)方法

19:定义一个Performer接口,表示一个演员,接口中定义perform方法,表示表演。为这个接口提供若干实现类:singer,表示歌手;Dancer,表示舞蹈演员;Player,表示演奏者。

定义一个Program类,表示一个节目。每一个节目需要多个演员配合,因此每一个Program类中都包含一个属性:Performer数组,表示表演这个节目所需要的演员。

给出Program的部分代码:

class Program{

private Performer[] ps;

public  Program(){

ps=new Performer[3];

ps[0]=new Singer();

ps[1]=new Dancer();

ps[2]=new Player();

}

}

在现有代码的基础上,为Program增加一个show方法,在这个方法中,调用所有的表演这个节目的所有Performer的perform方法。

 Performer 接口:
public interface Performer {
    /**表演*/
    public abstract void perform();
}
Singer类:
public class Singer implements Performer {
    public void perform() {
        System.out.println("歌手在表演");
    }
}
    Dancer 类:
public class Dancer implements Performer {
    public void perform() {
        System.out.println("舞蹈演员在表演");
    }
}
Player类:
public class Player implements Performer {
    public void perform() {
        System.out.println("演奏者在表演");
    }
}
    Program 类:
public class Program {
    private Performer[] ps;
    public Program(){
        ps = new Performer[3];
        ps[0] = new Singer();
        ps[1] = new Dancer();
        ps[2] = new Player();
    }
    public void show(){
        for (int i = 0; i < ps.length; i++) {
            ps[i].perform();
        }
    }
}
    PerformerTest 测试类:
public class PerformerTest {
    public static void main(String[] args) {
        Program program = new Program();
        program.show();
    }
}

20:定义一个学生类,属性为:姓名、年龄、成绩、头发数量

定义比较排序规则:

根据成绩从大到小排

如果成绩相同,根据头发数量从小到大排

如果头发数量也相同,根据年龄从小到大排

定义测试类,创建学生数组,合理创建若干学生对象,验证排序比较规则

提示:在compare方法中结合嵌套if分支

提交要求:把代码及运行截图放入word文档提交

 Student 类:
public class Student {
    private String name;
    private int age;
    private double score;
    private int hairNum;
    public Student() {
    }
    public Student(String name, int age, double score,int hairNum) {
        this.name = name;
        this.age = age;
        this.score = score;
        this.hairNum = hairNum;
    }
    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 double getScore() {
        return score;
    }
    public void setScore(double score) {
        this.score = score;
    }
    public int getHairNum() {
        return hairNum;
    }
    public void setHairNum(int hairNum) {
        this.hairNum = hairNum;
    }
}
    StudentCompare 类:
public class StudentCompare implements Comparator<Student> {
    public int compare(Student o1, Student o2) {
        if(o1.getScore() < o2.getScore()){
            return 1;
        }else if(o1.getScore() > o2.getScore()){
            return -1;
        }else {
            //如果成绩相等,头发少的在前
            if(o1.getHairNum() > o2.getHairNum()){
                return 1;
            }else if(o1.getHairNum() < o2.getHairNum()){
                return -1;
            }else{
                if(o1.getAge() < o2.getScore()){
                    return 1;
                }else if(o1.getAge() > o2.getScore()){
                    return -1;
                }
            }
            return 0;
        }
    }
}
    CompareTest 类:
public class CompareTest {
    public static void main(String[] args) {
        Student[] students = {new Student("小白",23,100,123456),
                new Student("小红",22,88,111111),
                new Student("大红",23,88,111111),
                new Student("小明",20,100,130000),
                new Student("小美",21,90,130000)};
        Arrays.sort(students, new StudentCompare());
        //输出排序结果
        for (int i = 0; i < students.length; i++) {
            System.out.println(students[i].getName()+"  "+students[i].getAge() +"  "
                    +students[i].getScore() + " " + students[i].getHairNum());
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/272575.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

比亚迪重磅来袭,汽车圈又要大动干戈?

12月15日&#xff0c;我盼望已久的新车————宋L正式登场&#xff01; 作为一直关注比亚迪的车主&#xff0c;这款新SUV一直处于我的观测范围内。终于在前几日&#xff0c;比亚迪宣布它将于12月15日上市&#xff0c;这对我来说无疑是个好消息。当我了解到宋L将推出后驱和四驱…

【Unity6.0+AI】Unity版的Pytorch之Sentis-把大模型植入Unity

本教程详细讲解什么Sentis。以及恶补一些人工智能神经网络的基础概念,概述了基本流程,加载模型、输入内容到模型、使用GPU让模型推理数据、输出数据。 官方文档 Unity Sentis: Use AI models in Unity Runtime | Unity 主页介绍 官方文档链接:Sentis overview | Sentis | 1…

挑战Python100题(6)

100+ Python challenging programming exercises 6 Question 51 Define a class named American and its subclass NewYorker. Hints: Use class Subclass(ParentClass) to define a subclass. 定义一个名为American的类及其子类NewYorker。 提示:使用class Subclass(Paren…

Scala安装

Scala安装使用 windows安装,配置环境变量 以下载Scala2.11为例&#xff0c;操作在Windows中安装Scala。 官网下载scala2.11&#xff1a;All Available Versions | The Scala Programming Language下载好后安装。双击msi包安装,记住安装的路径。配置环境变量&#xff08;和配…

YOLOv7训练数据报错

YOLOv7训练数据报错 错误提示1解决方案问题2解决方案成功运行 错误提示1 fatal: not a git repository (or any of the parent directories): .git Traceback (most recent call last):File "/home/ubuntu/code/yolov7-main/utils/google_utils.py", line 26, in att…

一图梳理多模态领域发展简史

本文采用关系图的方式整理了&#xff1a;CLiP、ViLT、FLiP、ALBEF、CoCa、BLiP、VLMo、BEiT 和BEiT v3等近几年来经典的多模态大模型&#xff0c;以及这些工作的相互依托关系。灵感来自&#xff1a;跟李沐读论文系列——多模态串讲 1 模型关系图&#xff1a; ’ 2 各模型的架…

Power BI 学习

数据获取 数据清洗 对导入的数据进行数据整理的过程一般称为「数据清洗」&#xff0c;之所以称之为清洗&#xff0c;是因为在数据分析师眼中&#xff0c;杂乱的数据就是脏数据&#xff0c;只有被清洗成干净的数据后才可以进行分析使用。 数据丰富 操作 1.复制列 点击列名选…

Spring之提前编译:AOT

学习的最大理由是想摆脱平庸&#xff0c;早一天就多一份人生的精彩&#xff1b;迟一天就多一天平庸的困扰。各位小伙伴&#xff0c;如果您&#xff1a; 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持&#xff0c;想组团高效学习… 想写博客但无从下手&#xff0c;急需…

讯飞星火认知大模型智能语音交互调用

随着国内外大模型热度的兴起&#xff0c;依托于大模型的智能化&#xff0c;传统的人机交互已经不能满足人们交互的需求。而结合语音和大模型的交互拜托传统互联网获取知识的文字限制&#xff0c;用语音也可以轻松获取想要的知识和思路。 一、大模型智能语音交互调用实现思路 …

k8s集群通过helm部署skywalking

1、安装helm 下载脚本安装 ~# curl -fsSL -o get_helm.sh https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 ~# chmod 700 get_helm.sh ~# ./get_helm.sh或者下载包进行安装 ~# wget https://get.helm.sh/helm-canary-linux-amd64.tar.gz ~# mv helm …

智能监测/检测系统EasyCVR国标接入无法播放是什么原因?该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

acwing linux docker教程

终章 听着名字还挺伤感的哈哈哈其实是Linux的终章&#xff0c;感谢大家这段时间的阅读&#xff0c;这段使时间我为了给大家清楚的讲解一下Linux自己也是很认真的学习了一遍&#xff0c;自己提升了也不少。其实最近学校里面是讲了Linux和windows server 2019搭载DNS、web、ftp服…

YOLOv5改进 | 主干篇 | ShuffleNetV2轻量化网络助力FPS提高(附代码+修改教程)

一、本文内容 本文给大家带来的改进内容是ShuffleNetV2&#xff0c;这是一种为移动设备设计的高效CNN架构。其在ShuffleNetV1的基础上强调除了FLOPs之外&#xff0c;还应考虑速度、内存访问成本和平台特性。(我在YOLOv5n上修改该主干降低了GFLOPs,但是参数量还是有一定上涨&am…

『JavaScript』全面掌握JavaScript数组的操作、方法与高级技巧

&#x1f4e3;读完这篇文章里你能收获到 学习JavaScript中数组的基本操作掌握JavaScript数组的多种内置方法了解JavaScript中的数组扩展运算符、Array.from()和Array.of()等实用技巧熟悉如何在JavaScript中使用数组方法进行数据处理 文章目录 一、基本操作1. 创建数组2. 访问和…

【Spring实战】07 JPA

文章目录 1. 定义2. 出现原因3. 添加依赖4. 使用1&#xff09;创建 Repository 接口2&#xff09;自定义查询方法&#xff08;非必须&#xff09;3&#xff09;创建实体类4&#xff09;调用方法 5. 验证6. 优点7. 缺点8. 详细代码总结 1. 定义 Spring Data JPA 是 Spring 提供…

IP 地址归属地查询

IP 地址归属地查询 1. IP 地址归属地查询2. IP 地址归属地查询References 1. IP 地址归属地查询 https://tool.lu/ip/index.html 2. IP 地址归属地查询 https://www.ip.cn/ip/.html References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

OpenAI GPT 模型 API 接口新增参数 top_logprobs 和 logprobs

文章目录 一、前言二、主要内容三、总结 &#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 一、前言 在最新的 OpenAI 官方 APIs 文档中&#xff0c;Create chat completion 中新增了 top_logprobs 和 logprobs 这两个关键参数。 官方文档地址&#xff…

掌握ElasticSearch(一):Elasticsearch安装与配置、Kibana安装

文章目录 〇、简介1.Elasticsearch简介2.典型业务场景3.数据采集工具4.名词解释 一、安装1.使用docker(1)创建虚拟网络(2)Elasticsearch安装步骤 2.使用压缩包 二、配置1.目录介绍2.配置文件介绍3.elasticsearch.yml节点配置4.jvm.options堆配置 二、可视化工具Kibana1.介绍2.安…

MuJava提供的方法级别的7类变异算子总结

MuJava简洁 Java (muJava) 是 Java 程序的变异系统。 它自动生成用于传统突变测试和类级别突变测试的突变体。 Java 可以测试单个类和多个类的包。 用户以对封装在单独 JUnit 类的方法中的被测类的方法调用序列的形式提供测试。 官网地址&#xff1a;Java Home Page 归档表格…

计算机网络面试题目

概述&#xff1a; 1、协议和服务之间的区别&#xff08;协议是水平的&#xff0c;服务是垂直的&#xff09; 2、计算机网络有那些层 应用层通过主机中进程的交互完成特定的网络应用。运输层提供两台主机间的进程之间的通信。网络层对传输层传下来的数据包封装&#xff0c;通过路…