【Java】让我们对多态有深入的了解(九)

news2024/11/18 7:27:46

目录

(1)接口的基本介绍​编辑

(2)接口的注意事项和细节

1.接口不能被实例化

2.接口中所有方法是public方法,接口中的抽象方法,可以不用abstract修饰

3.一个普通类实现接口,必须将接口所有的抽象方法都实现。

4.抽象类实现接口,可以不用实现接口的方法

5.一个类同时可以实现多个接口 

 6.接口中的属性,只能是final,而且是public static final修饰符

7.一个接口不能继承其他的类,但是可以继承多个别的接口。

 (3)接口和继承的区别

 (4)接口的多态性


(1)接口的基本介绍

 在接口类中可以有三种方法,分别为抽象、默认、静态,举例如下:

interface example{
    abstract int a();//抽象方法,如果没有写abstract,则其也会默认为abstract。
    default void b(){//默认方法
        
    };
   public static void c(){//静态方法

   }
}

而在实现类中,除了必须要实现的抽象类,还可以有自己的属性和方法。举例如下: 

interface example{
    abstract int a();//抽象方法,如果没有写abstract,则其也会默认为abstract。
    default void b(){//默认方法

    };
   public static void c(){//静态方法

   }
}
class iA implements example{
   int number=10;//自己的成员属性
   public void b(){//自己的成员方法
       System.out.println("这是在函数b");
   }
   
    public int a() {//实现抽象方法
        return 0;
    }
}

(2)接口的注意事项和细节

1.接口不能被实例化

interface example{
    
}

public class Main {
    public static void main(String[] args) {
        example example = new example();//接口不能被实例化


    }
}

2.接口中所有方法是public方法,接口中的抽象方法,可以不用abstract修饰

interface example{
  void a();//默认为abstract
}

3.一个普通类实现接口,必须将接口所有的抽象方法都实现。

4.抽象类实现接口,可以不用实现接口的方法

interface example{
  void a();//默认为abstract

}
abstract class iB implements example{//如果是一个抽象类实现接口,则可以不去实现接口的方法
    
}

5.一个类同时可以实现多个接口 

interface example{
}
interface example2{

}
abstract class iB implements example,example2{//一个类同时可以实现多个接口 

}

 6.接口中的属性,只能是final,而且是public static final修饰符

interface example{
    int a=10;//默认为public static final int a=10
}
public class Main {
    public static void main(String[] args) {
        System.out.println(example.a);


    }
}

7.一个接口不能继承其他的类,但是可以继承多个别的接口。

interface a{
    
}
class b{

}
interface c extends a{//这是正确的,接口可以继承其他的接口

}
interface d extends b{//这是错误的,接口不能继承其他的普通类
    
}

 (3)接口和继承的区别

很多人这时候觉得接口没有比继承比nb多少嘛,不就多个抽象方法嘛。假如有三个人,他们分别会编程、弹钢琴、健身,有一个儿子想拜干爹想学习他们的技能。如果用继承关系,是is-a的关系,这个人只能继承一个类,也就是学习一种技能。如果用继承同时实现三种则会报错,如下图。

 用接口则可以实现一个类去实现多个接口的方法,他们的关系是like-a。

 (4)接口的多态性

用生活中的一个实际例子,假如我们有手机、相机、电脑,我们想把手机和相机接入到电脑上,要怎么样接入呢?在现实我们知道用电脑上有usb接口直接插上就行。在编程中,我们首先则要一个接口定义usb规格,然后在手机和相机类去实现这个接口,最后在电脑中定义一个可以调用接口的方法。

interface usbinterface{//一个接口
    void use();
}
class phone implements usbinterface{//手机实现接口
    @Override
    public void use() {
        System.out.println("手机接入");
    }
}
class camera implements usbinterface{//电脑实现接口
    @Override
    public void use() {
        System.out.println("相机接入");
    }
}
class comperter{
    public void work(usbinterface usbinterface1){//定义可以调用接口的方法
        usbinterface1.use();
    }
}
public class Main {
    public static void main(String[] args) {
        comperter comperter = new comperter();
        phone phone = new phone();
        camera camera = new camera();
        comperter.work(phone);//体现了多态性
        System.out.println("====================");
        comperter.work(camera);//体现了多态性
        
    }
}

接口多态数组的体现

interface usbinterface{//一个接口
    void use();
}
class phone implements usbinterface{//手机实现接口
    @Override
    public void use() {
        System.out.println("手机接入");
    }
    public void call(){//手机的功能
        System.out.println("可以打电话");
    }
}
class camera implements usbinterface{//电脑实现接口
    @Override
    public void use() {
        System.out.println("相机接入");
    }
    public void picture(){//相机的功能
        System.out.println("可以照相");
    }
}
class comperter{
    public void work(usbinterface usbinterface1){//定义可以调用接口的方法
        usbinterface1.use();
    }
}
public class Main {
    public static void main(String[] args) {
        comperter comperter = new comperter();
        usbinterface []usbinterfaces = new usbinterface[2];
        usbinterfaces[0]=new phone();//体现了多态性
        usbinterfaces[1]=new camera();//体现了多态性
        if(usbinterfaces[0] instanceof phone){//如果运行类型为phone类则向下转型调用手机的方法
         ((phone) usbinterfaces[0]).call();
        }
        if(usbinterfaces[1] instanceof camera){
            ((camera)usbinterfaces[1]).picture();//如果运行类型为camera类则向下转型调用手机的方法
        }
        

    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ARMv8 architecture里的Memory aborts

在AArch64 Virtual Memory System Architecture中,有以下几种机制会导致PE在访问memory失败时产生exceptions。 Debug exception: An exception caused by the debug configuration.Alignment fault: An Alignment fault is generated if the address used for a m…

【YSYY】DSPE-PEG-cRGD,磷脂-聚乙二醇-靶向穿膜肽,靶向功能材料

靶向穿膜肽RGD环肽,磷脂-聚乙二醇-cRGD中的cRGD是五元环肽。 DSPE(1,2-二硬脂酰-sn-甘油-3-磷酸乙醇胺)是一种饱和的18碳磷脂,常用于脂质体的合成。聚乙二醇(PEG)偶联DSPE具有亲水性。聚乙二醇能增强溶解性…

一文2000字手把手教你自动化测试Selenium+pytest+数据驱动

主流自动化框架 selenium :web端自动化框架 ,(行业里面最核心的框架) appium :手机app端框架 requests :接口测试 selenium 工具类封装 selenium提供了很多方法供我们去完成网页元素的操作, …

1.创建Springboot项目

一:进入https://start.spring.io/,如下是相关步骤:地址https://start.spring.io/maven 方式springboot版本项目名称jar方式点击创建二:点击(generate)生产自动下载1.IDEA 直接打开2.启动成功SpringdiApplic…

【计算机网络】TCP底层设计交互原理

文章目录1.TCP底层三次握手详细流程2.TCP洪水攻击介绍和ss命令浅析3.Linux服务器TCP洪水攻击入侵案例4.TCP洪水攻击结果分析和解决方案5.TCP底层四次挥手详细流程1.TCP底层三次握手详细流程 TCP的可靠性传输机制:TCP三次我手的流程 一次握手:客户端发送一…

Java中抽象类有什么用

抽象类是用来捕捉子类的通用特性的,是被用来创建继承层级里子类的模板。现实中有些父类中的方法确实没有必要写,因为各个子类中的这个方法肯定会有不同;而写成抽象类,这样看代码时,就知道这是抽象方法,而知…

39-Golang中的接口

Golang中的接口基本介绍基本语法注意事项和细节案例实现对Hero结构体切片的排序:sort.Sort(data Interface)实现接口和继承之间的比较区别基本介绍 interface类型可以定义一组方法,但是这些不需要实现。并且interface不能包含任何变量。到某个自定义类型…

【编程入门】应用市场(NodeJS版)

背景 前面已输出多个系列: 《十余种编程语言做个计算器》 《十余种编程语言写2048小游戏》 《17种编程语言10种排序算法》 《十余种编程语言写博客系统》 《十余种编程语言写云笔记》 《N种编程语言做个记事本》 目标 为编程初学者打造入门学习项目,使…

JUC-Synchronized相关内容

设计同步器的意义多线程编程中,有可能会出现多个线程同时访问同一个共享、可变资源的情况,这个资源我们称之其为临界资源;这种资源可能是:对象、变量、文件等。共享:资源可以由多个线程同时访问可变:资源可…

25 openEuler管理网络-使用nmcli命令配置ip

文章目录25 openEuler管理网络-使用nmcli命令配置ip25.1 nmcli介绍25.2 设备管理25.2.1 连接到设备25.2.2 断开设备连接25.3 设置网络连接25.3.1 配置动态IP连接25.3.1.1 配置IP25.3.1.2 激活连接并检查状态25.3.2 配置静态IP连接25.3.2.1 配置IP25.3.2.2 激活连接并检查状态25…

Mr. Cappuccino的第44杯咖啡——Kubernetes之Service

Kubernetes之ServiceService的概念Service的类型Service演示案例环境准备ClusterIP(集群内部访问)IptablesIPVSEndpointNodePort(对外暴露应用)LoadBalancer(对外暴露应用,适用于公有云)Ingress…

3.抽象工厂模式

与工厂模式对比 工厂模式 工厂模式是类创建模式。在工厂模式中,只需要生产同一种产品,只不过是生产厂家不同。 所以产品类的设计: 抽象的产品类Product具体的产品类Product_A,Product_B, Product_C, Product_D…… 工厂的设计…

详解Android 13种 Drawable的使用方法

前言关于自定义View,相信大家都已经很熟悉了。今天,我想分享一下关于自定义View中的一部分,就是自定义Drawable。Drawable 是可绘制对象的一个抽象类,相对比View来说,它更加的纯粹,只用来处理绘制的相关工作…

用Python+ChatGPT批量生成论文概述

用PythonChatGPT批量生成论文概述 做算法研究离不开阅读大量论文。从海量论文中找到需要的论文往往耗费算法团队不少的精力。 ChatGPT官方例子中有一个“TL;DR”摘要生成,非常适合生成论文摘要。 于是我用pythonGPT-3 API开发了一个工具,可以直接从arx…

基于Android校园失物招领的设计与实现

需求信息: 客户端: 1:登录注册:用户可以通过自己的信息进行账号的注册 2:查看信息:用户可以查看失物和拾物信息,以及对信息进行点赞和评论 3:发布拾物信息:用户可以发布自…

连阿迪达斯都卖不动了!是国潮太卷,还是消费者对品牌祛魅了?

据权威报告,2022年,阿迪达斯业绩不佳,尤其是大中华区表现疲软。就在昨晚,阿迪在业绩指引中称“2023年营运亏损可能高达7亿欧元”,其美国存凭证(ADR)价格暴跌近9%。值得注意的是,这已…

2分钟告诉你怎么成为一名黑客?零基础入门

在很久很久以前(别问我有多久,不要在意这些细节),“ 黑客”指的是 喜爱钻研技术、精通计算机技术的程序员。后来有些黑客写了些能破坏程序或者系统正常运行的代码,又用搞了些破坏,于是这些黑客有了新的称呼…

APP优化 —— MMAP内存映射

mmap 一种内存映射文件的方法 mmap将一个文件或者其它对象映射进内存。文件被映射到多个页上&#xff0c;如果文件的大小不是所有页的大小之和&#xff0c;最后一个页不被使用的空间将会清零。mmap在用户空间映射调用系统中作用很大。 头文件 <sys/mman.h> 函数原型 v…

微信小程序(起步)

微信小程序1、微信小程序--起步1.1 小程序简介1.2 小程序构成1.3 小程序的宿主环境1.4 协同工作和发布1、微信小程序–起步 1.1 小程序简介 小程序与普通网页开发的区别 运行环境不同 网页运行在浏览器中&#xff0c;小程序运行在微信环境中 API不同 小程序无法调用DOM和BOM…

【unity3d】1 界面 贴图 渲染 相机

一 学习背景 暴雪国服停运后&#xff0c;没有星际玩要死力 玩了一段时间[原神]感觉这个世界观和机制设定有点牛笔&#xff0c;米哈游怎么不像[魔兽世界-魔兽争霸]的关系那样&#xff0c;做个[原神争霸]捏&#xff0c;不如自己做一个耍耍 二 unity3d安装 1 官网&#xff0c;直…