18、JAVA入门——接口

简介: 18、JAVA入门——接口

❤️  1、生活中的接口

       (1)Java中接口的作用和生活中的接口类似,它提供一种约定,使得实现接口的类(或结构)在形式上保持一致。


       (2)如果抽象类中所有的方法都是抽象方法,就可以使用接口来表示。


       (3)接口可以看作是一种特殊的“抽象类”,但是采用与抽象类完全不同的语法来表示,两者的设计理念也不同。


❤️  2、 定义和实现一个简单的接口

       (1)接口是一个不能实例化的类型。接口类型的定义类似于类的定义,语法格式如下:


               public interface 接口名{


                       //接口成员


               }


               -->定义接口使用interface修饰符,访问修饰符只能是public,且可选。


               -->接口成员可以全是常量和公共的抽象方法。


               -->使用接口必须通过子类,子类通过implements关键字实现接口。


               例:定义一个USB的接口类


 

package cn.bdqn.demo03;
    //接口类
    public interface USB {
  //定义USB接口的传输电能的方法
  void dian();
  //定义USB接口的传输数据的方法
  void data();
    }

       (2)实现接口的语法格式如下:


               public 类名 implements 接口名 {


                       实现方法


                       普通方法


               }


               -->实现接口使用implements关键字。


               -->实现接口的类必须实现接口中定义的所有抽象方法。接口的实现类允许包含普通方法。


               例:定义一个实现接口的实现类


package cn.bdqn.demo03;
public class USBDisk implements USB {
  @Override
  public void dian() {
  System.out.println("U盘获取高电压的电流......");
  }
  @Override
  public void data() {
  System.out.println("U盘快速传输数据.....");
  }
  //在USBDisk类中定义特有的方法
  public void demo(){
  System.out.println("我是USBDisk类中特有的方法");
  }
}

❤️  3、更复杂的接口

       (1)接口本身也可以继承接口。


       (2)接口继承的语法格式如下:


               [修饰符] interface 接口名 extends 父接口1,父接口2,......{


                       常量定义


                       方法定义


               }


       (3)一个普通类只能继承一个父类,但能同时实现多个接口,也可以同时继承抽象类和实现接口。


       (4)实现多个接口的语法格式如下:


               class 类名 extends 父类名 implements 接口1,接口2,......{


                       类的成员


               }


package cn.bdqn.demo04;
public class CommonHandSet extends HandSet implements PlayWiring {
  public CommonHandSet() {
  super();
  }
  public CommonHandSet(String brand, String type) {
  super(brand, type);
  }
  @Override
  public void play(String incontent) {
  System.out.println("开始播放音乐《" + incontent + "》......");
  }
  @Override
  public void sendInfo() {
  System.out.println("发送文字信息......");
  }
  @Override
  public void call() {
  System.out.println("开始语音通话.......");
  }
}


       (5)关于定义和实现接口,需要注意以下几个方面的内容。


               -->接口和类、抽象类是一个层次的概念,命名规则相同。


               -->修饰符如果是public,则该接口在整个项目中可见。如果省略修饰符,该接口只在当前包中可见。


               -->接口中可以定义常量,不能定义变量。接口中的属性都默认用“public static final”修饰,即接口中的属性都是全局静态常量。接口中的常量必须在定义时指定初始值。


               -->接口中的所有方法都是抽象方法,接口中的方法都默认为public。


               -->和抽象类一样,接口同样不能实例化,接口中不能有构造方法。


               -->接口之间可以通过extends实现继承关系,一个接口可以继承多个接口,但接口不能继承类。


               -->类只能继承一个父类,但可以通过implements实现多个接口。一个类必须实现接口的全部方法,否则必须定义为抽象类。若一个类在继承父类的同时又实现了多个接口,extends必须位于implements之前。


❤️  4、使用接口的优势

       (1)接口可以解决Java中单根继承的局限性。


       (2)在抽象类中可以将接口作为属性,通过属性调用该接口的方法。

1.gif

❤️  5、抽象类VS接口

(1)相同点


       1)代表系统的抽象层


       2)都不能被实例化


       3)都能包含抽象方法


               用于描述系统提供的服务,不必提供具体实现


(2)不同点


       1)在抽象类中可以为部分方法提供默认实现,而接口中只能包含抽象方法


               抽象类便于复用,接口便于代码维护


       2)一个类只能继承一个直接的父类,但可以实现多个接口


(3) 使用原则


       1)接口做系统与外界交互的窗口


               接口提供服务


       2)接口本身一旦制定,就不允许随意修改


       3)抽象类可完成部分功能实现,还有部分功能可作为系统的扩展

❤️  6、面向对象设计的原则

       (1)摘取代码中变化的行为,形成接口。


       (2)多用组合,少用继承。


       (3)针对接口编程,不依赖于具体实现。


       如果对一个类型有依赖,应该尽量依赖接口,尽量少依赖子类。因为子类一旦变化,代码变动的可能性大,而接口要稳定得多。


       在具体的代码实现中,体现在方法参数尽量使用接口,方法的返回值尽量使用接口,属性类型尽量使用接口等。


       (4)针对扩展开放,针对改变关闭。


       如果项目中的需求发生了变化,应该添加一个新的接口或者类,而不要去修改原有的代码。


 


相关文章
|
4天前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
|
2天前
|
监控 安全 Java
Java中的多线程编程:从入门到实践####
本文将深入浅出地探讨Java多线程编程的核心概念、应用场景及实践技巧。不同于传统的摘要形式,本文将以一个简短的代码示例作为开篇,直接展示多线程的魅力,随后再详细解析其背后的原理与实现方式,旨在帮助读者快速理解并掌握Java多线程编程的基本技能。 ```java // 简单的多线程示例:创建两个线程,分别打印不同的消息 public class SimpleMultithreading { public static void main(String[] args) { Thread thread1 = new Thread(() -> System.out.prin
|
5天前
|
Java
java线程接口
Thread的构造方法创建对象的时候传入了Runnable接口的对象 ,Runnable接口对象重写run方法相当于指定线程任务,创建线程的时候绑定了该线程对象要干的任务。 Runnable的对象称之为:线程任务对象 不是线程对象 必须要交给Thread线程对象。 通过Thread的构造方法, 就可以把任务对象Runnable,绑定到Thread对象中, 将来执行start方法,就会自动执行Runable实现类对象中的run里面的内容。
16 1
|
8天前
|
Java 大数据 API
14天Java基础学习——第1天:Java入门和环境搭建
本文介绍了Java的基础知识,包括Java的简介、历史和应用领域。详细讲解了如何安装JDK并配置环境变量,以及如何使用IntelliJ IDEA创建和运行Java项目。通过示例代码“HelloWorld.java”,展示了从编写到运行的全过程。适合初学者快速入门Java编程。
|
10天前
|
Java 开发者
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
在Java多线程编程的世界里,Lock接口正逐渐成为高手们的首选,取代了传统的synchronized关键字
38 4
|
17天前
|
安全 Java
在 Java 中使用实现 Runnable 接口的方式创建线程
【10月更文挑战第22天】通过以上内容的介绍,相信你已经对在 Java 中如何使用实现 Runnable 接口的方式创建线程有了更深入的了解。在实际应用中,需要根据具体的需求和场景,合理选择线程创建方式,并注意线程安全、同步、通信等相关问题,以确保程序的正确性和稳定性。
|
14天前
|
存储 安全 Java
🌟Java零基础-反序列化:从入门到精通
【10月更文挑战第21天】本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!
49 5
|
11天前
|
安全 Java 调度
Java中的多线程编程入门
【10月更文挑战第29天】在Java的世界中,多线程就像是一场精心编排的交响乐。每个线程都是乐团中的一个乐手,他们各自演奏着自己的部分,却又和谐地共同完成整场演出。本文将带你走进Java多线程的世界,让你从零基础到能够编写基本的多线程程序。
26 1
|
15天前
|
Java
Java基础(13)抽象类、接口
本文介绍了Java面向对象编程中的抽象类和接口两个核心概念。抽象类不能被实例化,通常用于定义子类的通用方法和属性;接口则是完全抽象的类,允许声明一组方法但不实现它们。文章通过代码示例详细解析了抽象类和接口的定义及实现,并讨论了它们的区别和使用场景。
|
15天前
|
Java 测试技术 API
Java零基础-接口详解
【10月更文挑战第19天】Java零基础教学篇,手把手实践教学!
16 1