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

Java SE入门及基础(35)

接口

1. 概念

        在软件工程中,软件与软件的交互很重要,这就需要一个约定。每个程序员都应该能够编写实现这样的约定。接口就是对约定的描述。
In the Java programming language, an interface is a reference type, similar to a class, that can contain only constants, method signatures, default methods, static methods, and nested types. Method bodies exist only for default methods and static methods. Interfaces cannot be instantiated—they can only be implemented by classes or extended by other interfaces
Java 编程语言中,接口是类似于类的引用类型,它只能包含常量,方法签名,默认方法,静态方法和嵌套类型。 方法主体仅适用于默认方法和静态方法。 接口无法实例化- 它们只能由类实现或由其他接口扩展。
An interface declaration can contain method signatures, default methods, static methods and constant definitions. The only methods that have implementations are default and static methods.
接口声明可以包含方法签名,默认方法,静态方法和常量定义。 具有实现的方法是默认方法和静态方法。
从上面的描述中可以得出: 接口中没有构造方法。

2. 接口定义

语法
[ public ] interface 接口名 {
                [ public static final ] 数据类型 变量名 = 变量的值 ; // 接口中定义变量,该变量是静态常量,在定义的时候必须赋值
                
                返回值类型 方法名 ([ 参数列表 ]); // 定义接口方法
                default 返回值类型 方法名 ([ 参数列表 ]){ // 接口中定义的默认方法,必须在 JDK8 及以上版本使用
                        [ return 返回值 ;]
                }
                static 返回值类型 方法名 ([ 参数列表 ]){ // 接口中定义的静态方法,必须在 JDK8 及以上版本使用
                        [ return 返回值 ;]
                }
                private 返回值类型 方法名 ([ 参数列表 ]){ // 接口中定义的私有方法,必须在 JDK9 及以上版本使用
                        [ return 返回值 ;]
                }
}
package com . we . interfaceclass ;
interface Test {
        public static final int number = 10 ;
        public abstract void show ();
        public default int plus ( int a , int b ){
                return a + b ;
        }
        public static int multiply ( int a , int b ){
                return a * b ;
        }
        private String getName (){
                return "admin" ;
        }
}
示例
使用接口描述人有名字
package com . we . interfaceclass . person ;
public interface Person {
        String getName (); // 获取人的姓名
}
使用接口描述演员能表演
package com . we . interfaceclass . person ;
public interface Actor {
        void performance (); // 演员表演
}

3. 接口继承

语法
[ public ] interface 接口名 extends 接口名 1 , 接口名 2 ,... 接口名 n {
}
示例
使用接口继承描述演员是人
package com . we . interfaceclass . person ;
public interface Actor extends Person {
        void performance (); // 演员表演
}
使用接口继承描述歌手是人
package com . we . interfaceclass . person ;
public interface Singer extends Person {
        void sing (); // 唱歌
}
使用接口继承描述艺人既是演员也是歌手
package com . we . interfaceclass . person ;
public interface Artist extends Actor , Singer {
        void endorsement (); // 代言
}
        注意: 接口可以多继承,这是Java 唯一可以使用多继承的地方。接口包含的变量都是静态常量,接 口中包含的方法签名都是公开的抽象方法,接口中的默认方法和静态方法在 JDK8 及以上版本才能定 义,接口的私有方法必须在 JDK9 及以上版本才能定义。接口编译完成后也会生成相应的 class 文件。

4. 接口实现

实现接口语法
访问修饰符 class 类名 implements 接口名 1 , 接口名 2 ,... 接口名 n {
}
A class that implements an interface must implement all the methods declared in the interface.
实现接口的类必须实现接口中声明的所有方法。
        一个类如果实现了一个接口,那么就必须实现这个接口中定义的所有抽象方法(包括接口通过继承关系继承过来的抽象方法),这个类被称为接口的实现类或者说子类。与继承关系一样,实现类与接口之间 的关系是 is-a 的关系。
示例
使用实现接口的方式描述娱乐明星是艺人
package com . we . interfaceclass . person ;
public class EntertainmentStar implements Artist {
        private String name ;
        public EntertainmentStar ( String name ) {
                this . name = name ;
        }
        @Override
        public void endorsement () {
                System . out . printf ( " 娱乐明星 %s 代言 \n" , getName ());
        }
        @Override
        public void performance () {
                System . out . printf ( " 娱乐明星 %s 表演 \n" , getName ());
        }
        @Override
        public void sing () {
                System . out . printf ( " 娱乐明星 %s 唱歌 \n" , getName ());
        }
        @Override
        public String getName () {
                return name ;
        }
}
package com . we . interfaceclass . person ;
public class PersonTest {
        public static void main ( String [] args ) {
                Person p = new EntertainmentStar ( " 刘德华 " ); // 娱乐明星是人
                System . out . println ( p . getName ());
                Actor a = new EntertainmentStar ( " 范冰冰 " ); // 娱乐明星是演员
                a . performance ();
                Singer s = new EntertainmentStar ( " 张学友 " ); // 娱乐明星是歌手
                s . sing ();
                Artist artist = new EntertainmentStar ( " 古天乐 " ); // 娱乐明星是艺人
                artist . endorsement ();
                artist . performance ();
                artist . sing ();
        }
}

5. 接口应用场景

        一般来说,定义规则、定义约定时使用接口。
示例
        计算机对外暴露有 USB 接口, USB 接口生产商只需要按照接口的约定生产相应的设备 ( 比如 USB 键盘、USB 鼠标、优盘 ) 即可。

Java SE文章参考:Java SE入门及基础知识合集-CSDN博客

相关文章:

  • 基于 HBase Phoenix 构建实时数仓(2)—— HBase 完全分布式安装
  • plantUML使用指南之序列图
  • 98. 一台服务器能支持多少QPS
  • Spring Security
  • 代码随想录day33 Java版
  • 高可用篇_A Docker容器化技术_V 基于DockerCompose实现容器编排
  • 蓝桥杯(3.10)
  • python基础及网络爬虫
  • Langchain-Chatchat本地搭建ChatGLM3模型和提取PDF内容
  • 【自然语言处理】【大模型】BitNet:用1-bit Transformer训练LLM
  • 蓝桥杯[OJ 2928]分糖果-CPP(贪心、字典序)
  • FreeRTOS教程2 任务管理
  • 加密 / MD5算法 /盐值
  • C语言——简易版扫雷
  • 解决达梦集成 JPA 时表和字段注释注解不生效的问题
  • 2.4_4 死锁的检测和解除
  • Python 导入Excel三维坐标数据 生成三维曲面地形图(体) 5-3、线条平滑曲面且可通过面观察柱体变化(三)
  • FPGA TestBench编写学习
  • 使用Vite构建Vue3+TypeScript项目
  • 深入了解网络流量清洗--使用免费的雷池社区版进行防护
  • 做网站怎么买断源码/制作网站的网址
  • 廊坊专业网站网站/软文代写平台
  • wordpress 菜单 插件/淘宝关键词优化技巧
  • 网站面包屑导航代码/怎么让百度收录网站
  • html怎么做网站地图/互联网推广销售好做吗
  • 512m内存做网站/关键词seo排名优化软件