接口多态 面试题及习题

基础题目

第一题:概念辨析

  1. 什么是接口,如何定义接口?
    • 接口,是Java语言中一种引用类型,是方法的集合。
    • 使用interface关键定义接口,其中可以定义抽象方法,默认方法,私有方法,静态方法等方法。
  2. 什么叫做多态,条件是什么?
    • 一类事物的行为,具有多种表现形式。
    • 条件:
      • 继承或者实现【二选一】
      • 方法的重写。
      • 父类引用指向子类对象。
  3. 使用多态特性,带来了什么样的好处?
    • 增强方法的扩展性和复用性。
  4. 使用多态特性,注意什么样的弊端?
    • 由于类型的提升,导致调用子类对象特有的方法,必须向下转型。

第二题:语法练习

  • 语法点:接口

  • 按步骤编写代码,效果如图所示:
    在这里插入图片描述

  • 编写步骤:

    1. 定义接口A,普通类B实现接口A
    2. A接口中,定义抽象方法showA。
    3. A接口中,定义默认方法showB。
    4. B类中,重写showA方法
    5. 测试类中,创建B类对象,调用showA方法,showB方法。
  • 参考答案.:

	
	public class Test2 {
	    public static void main(String[] args) {
	        B b = new B();
	        b.showA();
	        b.showB();
	    }
	}
	
	interface A{
	    public abstract void showA();
	    public default void showB(){
	        System.out.println("BBBB");
	    }
	}
	
	class B implements A {
	    @Override
	    public void showA() {
	        System.out.println("AAAA");
	    }
	}

第三题:语法练习

  • 语法点:接口

  • 按步骤编写代码,效果如图所示:

在这里插入图片描述

  • 编写步骤:

    1. 定义接口A,普通类B实现接口A。
    2. A接口中,定义抽象方法showA。
    3. A接口中,定义私有方法show10(String str),循环打印10次str。
    4. A接口中,定义默认方法showB10,showC10,分别调用show10方法,传入参数。
    5. 测试类中,创建B对象,调用showA方法,showB10方法,showC10方法
  • 参考答案.:

	
	public class Test3 {
	    public static void main(String[] args) {
	        BB b = new BB();
	        b.showA();
	        b.show10B();
	        b.show10C();
	    }
	}
	
	interface AA{
	    public abstract void showA();
	    public default void show10B(){
	       show10("BBBB");
	    }
	
	    public default void show10C(){
	        show10("CCCC");
	    }
	
	    private  void show10(String str){
	        for (int i = 0; i < 10; i++) {
	            System.out.print(str+" ");
	        }
	        System.out.println();
	    }
	}
	
	class BB implements AA {
	    @Override
	    public void showA() {
	        System.out.println("AAAA");
	    }
	
	}

第四题:语法练习

  • 语法点:接口,静态

  • 按步骤编写代码,效果如图所示:

在这里插入图片描述

  • 编写步骤
  1. 定义接口A,普通类B实现接口A。
  2. A接口中,定义抽象方法showA。
  3. A接口中,定义私有静态方法show10(String str),循环打印10次str。
  4. A接口中,定义静态方法showB10,showC10,分别调用show10方法,传入参数。
  5. B类中,定义静态方法showD
  6. 测试类中,使用A接口,调用静态showB10方法,showC10方法,
  7. 测试类中,使用B类,调用showA方法,showD方法。
  • 参考答案.:
	
	public class Test4 {
	    public static void main(String[] args) {
	       AAA.showB();
	       AAA.showC();
	        BBB bbb = new BBB();
	        bbb.showA();
	        BBB.showD();
	    }
	}
	
	interface AAA {
	    public abstract void showA();
	    public static void showB(){
	        System.out.println("static BBBB");
	
	        show10("BBBB");
	    }
	
	    public static void showC(){
	        System.out.println("static CCCC");
	
	        show10("CCCC");
	    }
	
	    private static void show10(String str) {
	        for (int i = 0; i < 10; i++) {
	            System.out.print( str+" ");
	        }
	        System.out.println();
	    }
	}
	
	class BBB implements AAA {
	    @Override
	    public void showA() {
	        System.out.println("AAA");
	    }
	
	    public static void showD(){
	        System.out.println("DDDD");
	    }
	}

第五题:语法练习

  • 语法点:接口,多态

  • 按步骤编写代码,效果如图所示:

在这里插入图片描述

  • 编写步骤

    1. 定义接口Universe,提供抽象方法doAnything。
    2. 定义普通类Star,提供成员发光shine方法
    3. 定义普通类Sun,继承Star类,实现Universe接口
    4. 测试类中,创建Star对象,调用shine方法
    5. 测试类中,多态的方式创建Sun对象,调用doAnything方法,向下转型,调用shine方法。
  • 参考答案.:

		
		public class Test5 {
		    public static void main(String[] args) {
		        Star s  = new Star();
		        s.shine();
		
		        System.out.println("====================");
		
		        Universe universe = new Sun();
		
		        universe.doAnything();
		        Sun sun  = (Sun) universe;
		        sun.shine();
		    }
		}
		
		interface  Universe{
		    public abstract void doAnything();
		}
		
		class Star {
		    public void shine(){
		        System.out.println("star:星星一闪一闪亮晶晶");
		    }
		}
		class  Sun extends Star implements Universe{
		    @Override
		    public void doAnything() {
		        System.out.println("sun:太阳吸引着9大行星旋转");
		    }
		    @Override
		    public void shine() {
		        System.out.println("sun:光照八分钟,到达地球");
		    }
		}

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

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

相关文章

ESP32应用教程(0)— PMW3901MB光流传感器

文章目录 前言 1 传感器介绍 1.1 关键特征 1.2 关键参数 2 硬件概述 2.1 信号引脚 2.2 参考电路图 3 寄存器 3.1 寄存器列表 3.2 性能优化寄存器 4 代码说明 4.1 结构体说明 4.2 编译说明 5 波形分析 前言 本文介绍了在 ESP32 DEVKIT V1 开发板上开发 PMW3901MB…

VR防地质灾害安全教育:增强自然灾害知识,提高自我保护意识

VR防地质灾害安全教育系统是一种虚拟仿真技术&#xff0c;可以通过虚拟现实技术模拟地震、泥石流、滑坡等地质灾害的发生和应对过程&#xff0c;帮助人们提高应对突发自然灾害的能力。这种系统的优势在于可以增强自然灾害知识&#xff0c;提高自我保护意识&#xff0c;锻炼人们…

4. 池化层相关概念

4.1 池化层原理 ① 最大池化层有时也被称为下采样。 ② dilation为空洞卷积&#xff0c;如下图所示。 ③ Ceil_model为当超出区域时&#xff0c;只取最左上角的值。 ④ 池化使得数据由5 * 5 变为3 * 3,甚至1 * 1的&#xff0c;这样导致计算的参数会大大减小。例如1080P的电…

R语言实现网状Meta分析(1)

#R语言实现网状Meta library(gemtc) help(package"gemtc") data<-gemtc::smoking #注意按照实例格式编写数据 net<-mtc.network(data$data.ab) #网状图 plot(net,mode"circle",displaylabelsT,boxed.labelF) summary(net) #网状model model<-mtc…

wazuh环境配置和漏洞复现

1.wazuh配置 虚拟机 &#xff08;OVA&#xff09; - 替代安装 (wazuh.com)在官方网页安装ova文件 打开VMware选择打开虚拟机&#xff0c;把下载好的ova文件放入在设置网络改为NAT模式 账号:wazuh-user 密码:wazuh ip a 查看ip 启动小皮 远程连接 账号admin …

温故知新之:代理模式,静态代理和动态代理(JDK动态代理)

0、前言 代理模式可以在不修改被代理对象的基础上&#xff0c;通过扩展代理类&#xff0c;进行一些功能的附加与增强。 1、静态代理 静态代理是一种代理模式的实现方式&#xff0c;它在编译期间就已经确定了代理对象&#xff0c;需要为每一个被代理对象创建一个代理类。静态代…

机器学习资料汇总

一 卷积 原来卷积是这么计算的 - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/268179286 最核心的部分是要知道&#xff0c;通道数和输出特征图无关&#xff0c;是卷积核的个数&#xff0c;决定了输出特征图的个数

详解 SpringMVC 的 @RequestMapping 注解

文章目录 1、RequestMapping注解的功能2、RequestMapping注解的位置3、RequestMapping注解的value属性4、RequestMapping注解的method属性5、RequestMapping注解的params属性&#xff08;了解&#xff09;6、RequestMapping注解的headers属性&#xff08;了解&#xff09;7、Sp…

ArcGIS Pro怎么解决道路压盖问题

在默认情况下&#xff0c;道路可能会存在低等级道路将高等级道路压盖、在道路连接处不连通的情况&#xff0c;这些问题都可以在ArcGIS Pro内解决&#xff0c;这里为大家介绍一下处理方法&#xff0c;希望能对你有所帮助。 道路分级 在符号系统内&#xff0c;选择唯一值&#x…

集成易点易动管理系统连接更多应用

场景描述&#xff1a; 基于易点易动开放平台能力&#xff0c;无代码集成易点易动与多个应用互通互连&#xff0c;实现固定资产管理数字化、智能化。通过Aboter可搭建业务自动化流程&#xff0c;实现多个应用之间的数据连接。 开放能力&#xff1a; 消息推送&#xff1a; 新…

前端js实现获取指定元素(top,lef,right,bottom)到视窗的距离 ;getBoundingClientRect()获取

getBoundingClientRect()获取元素位置&#xff0c;这个方法没有参数 该函数返回一个Object对象&#xff0c;该对象有6个属性&#xff1a;top,lef,right,bottom,width,height&#xff1b; <div id"box"></div>var objectdocument.getElementById(box); …

计算机组成原理(主存储器的基本组成、 运算器的基本组成、 控制器的基本组成、完成一条指令的三个阶段)

主存储器的基本组成&#xff1a; 这个是读数据操作图&#xff1a; 读入数据与菜鸟驿站的取货流程差不多&#xff1a; 写入数据的过程与读入数据类似&#xff1a; 1、cpu 指明想要写入到那个位置&#xff08;写到MAR中&#xff09; 2、想要写入的数据会放到MDR中 3、c…

Visual Studio中Linux开发头文件intellisense问题的解决办法

文章目录 前言个人环境 SSH到WSL复制文件后记 前言 最近在用我心爱的Visual Studio配合WSL2做一些Linux开发&#xff0c;但是有一个问题&#xff0c;就是当我#include <sys/socket.h>&#xff0c;会提示找不到文件 我尝试了各种姿势&#xff0c;包括修改CMakeSettings.…

Hbase-技术文档-java.net.UnknownHostException: 不知道这样的主机。 (e64682f1b276)

问题描述&#xff1a; 在使用spring-boot操作habse的时候&#xff0c;在对habse进行操作的时候出现这个问题。。 报错信息如下&#xff1a; 第一段报错&#xff1a; 第二段报错&#xff1a; java.net.UnknownHostException: e64682f1b276 问题定位解读&#xff1a; 错误 ja…

FanoutExchange广播(扇形)交换机

目录 一、简介 二、代码展示 父pom文件 pom文件 配置文件 config 生产者 消费者 测试 结果 一、简介 扇型&#xff08;广播&#xff09;交换机&#xff0c;这个交换机没有路由键概念&#xff0c;就算你绑了路由键也是无视的。 这个交换机在接收到消息后&#xff0c;…

Windows安装6s模型

官网给出了详细的安装步骤 第一步&#xff1a;安装编译器 安装GnuWin32&#xff0c;按照提示安装&#xff0c;安装到你想安装的地方&#xff0c;记住目录。 安装G77&#xff0c;下载链接里面的Fort99.zip&#xff0c;将G77文件夹提取到C盘根目录。 将这两个目录的bin目录添加…

LibreOffice新一代的办公软件for Mac/Windows免费版

LibreOffice是一款免费、开源的办公软件套件&#xff0c;可在多个操作系统上运行&#xff0c;包括Windows、Mac和Linux。它提供了一系列功能强大的办公工具&#xff0c;包括文档处理、电子表格、演示文稿、数据库管理等。 LibreOffice的界面简洁直观&#xff0c;与其他流行的办…

python+django+协同过滤算法-基于爬虫的个性化书籍推荐系统(包含报告+源码+开题)

为了提高个性化书籍推荐信息管理的效率&#xff1b;充分利用现有资源&#xff1b;减少不必要的人力、物力和财政支出来实现管理人员更充分掌握个性化书籍推荐信息的管理&#xff1b;开发设计专用系统--基于爬虫的个性化书籍推荐系统来进行管理个性化书籍推荐信息&#xff0c;以…

MacOS软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 MacOS是一种由苹果公司开发的操作系统&#xff0c;专门用于苹果公司的计算机硬件。它被广泛用于创意和专业应用程序&#xff0c;如图像设计、音频和视频编辑等。以下是关于MacOS的详细介绍。 1、MacOS的历史和演变 MacOS最初于…

node.js安装好后测试报错解决

node.js的版本是18.X.X node.js安装好后&#xff0c;执行命令&#xff1a; npm install express -g 报错&#xff01;&#xff01;&#xff01; 解决办法&#xff1a; 看报错是由于权限不够&#xff0c; 所以打开cmd时&#xff0c;以管理员的方式打开 然后再执行命令就OK了…