接口

学习完框架之后,整合SSM过程中对于接口的认识加深了许多。根据《java核心技术》这本书进一步研究了一下。

1.概念

java核心技术是这样说的:“在Java程序设计中,接口不是类,而是对希望符合这个接口的类的一组需求”。

  • 首先:接口不是类;
  • 其次:接口是符合这个接口的类的一组需求;

第二点的意思就是说接口需要有一个实现类对它进行实现;

2.具体实现

  • 通过源码研究一下
public interface Comparable<T> {
public int compareTo(T o);
}
    • 接口就是对需求的一个展示,谁使用谁就需要去重写一个方法;
    • 接口使用“interface”关键字代替“class”关键字。
    • 实际上接口中的所有方法都是公开,接口中的方法中的public可以不用书写,但是很多人为了代码结构的完整性都会加上。
  • 实现类

class Employee implements Comparable<Employee>{
private String name;
private double salary; public Employee(String name, double salary) {
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Employee [name=" + name + ", salary=" + salary + "]";
}
@Override
public int compareTo(Employee o) {
// TODO Auto-generated method stub
/*
* 按照价格排序
*/
return Double.compare(salary, o.salary);
}
}
    • 1.实现类必须继承接口的方法,参数,返回值必须保持一致;
    • 2.Arrays.sort(T)这个方法很重要,T这个对象必须实现Comparable接口才能使用,因为sort方法是通过Comparable接口中的comparaTo()进行比较的,具体情况看源码;
  • 具体使用

    public class EmployeeSortTest {
    
    	public static void main(String[] args) {
    var staff = new Employee[3]; staff[0] = new Employee("Harry Hacker",35000);
    staff[1] = new Employee("Carl Cracker",75000);
    staff[2] = new Employee("Tony Tester",38000); Arrays.sort(staff); for(Employee e:staff) {
    System.out.println("name="+e.getName()+",salary="+e.getSalary());
    }
    }
    }

3.属性

  • 接口不是类,不能使用new 创建一个接口对象。但是:

    • 接口可以声明一个接口变量,而且可以通过一个实现类创建这个对象;

      Comparable x;
      x = new Emplyee();
  • 接口判断

    System.out.println(staff[2] instanceof Employee);
    System.out.println(staff[1] instanceof Comparable);
    • 使用”instanceof“关键字,就可以实现接口的判断;
  • 接口中不能包含实例字段,但是可以包含常量;

    public interface T {
    
     void so();
    
     int account= 1;
    
    }
    • 接口中的字段总是public static final;

4.继承

  • 1.虽然每个类都只有一个父类,但是可以有多个接口;

  • 2.接口也可以继承;

    package com.sun.day01.Com;
    
    public interface Moveable {
    
    	void move(Integer x,Integer y);
    
    }
    package com.sun.day01.Com;
    
    public interface LeftMoveable extends Moveable {
    
    	Integer move(int x,int y);
    }

5.接口的兼容性

  • 1.Java中的接口最初设计为抽象类型,可用于类型的多种继承。

  • 2.在Java 1.0中,接口定义只能包含两种成员:静态常量和抽象方法。

  • 3.java8之前,接口基本上没有多大变化;

public interface {
void so();
int account= 1;
}
  • 4.java8开始,接口开始发生重大变化,接口中出现了默认方法,接口中可以产生静态方法;

  • 5.Java 9以后的接口中受支持的成员有静态常量,抽象方法,默认方法,静态方法,私有方法,嵌套类,嵌套接口,嵌套枚举和嵌套批注。(还真不少以后慢慢学‘

    JAVA基础之接口的更多相关文章

    1. Java基础十--接口

      Java基础十--接口 一.接口的定义和实例 /* abstract class AbsDemo { abstract void show1(); abstract void show2(); } 8 ...

    2. Java基础-面向接口(interface)编程

      Java基础-面向接口(interface)编程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.接口的概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的“类 ...

    3. 【Java基础】接口和抽象类之间的对比

      Java 中的接口和抽象类之间的对比 一.接口 Interface,将其翻译成插座可能就更好理解了.我们通常利用接口来定义实现类的行为,当你将插座上连接笔记本的三角插头拔掉,换成微波炉插上去的时候,你 ...

    4. Java基础10 接口的继承与抽象类

      链接地址:http://www.cnblogs.com/vamei/archive/2013/03/31/2982240.html 作者:Vamei 出处:http://www.cnblogs.com ...

    5. Java基础10 接口的继承与抽象类(转载)

      接口继承 接口继承(inheritance)与类继承很类似,就是以被继承的interface为基础,增添新增的接口方法原型.比如,我们以Cup作为原interface:  interface Cup{ ...

    6. java基础(11):接口、多态

      1. 接口 1.1 接口概念 接口是功能的集合,同样可看做是一种数据类型,是比抽象类更为抽象的”类”. 接口只描述所应该具备的方法,并没有具体实现,具体的实现由接口的实现类(相当于接口的子类)来完成. ...

    7. Java基础之接口与抽象类及多态、内部类

      final关键字 被其修饰的类,不能被继承. 被其修饰的方法,不能被覆盖. 被其修饰的变量,是一个常量,不能被修改,所以定义时必须初始化(和C++的const类似). 一般有final,会搭配stat ...

    8. java基础之接口(抽象类与接口的区别)

      概述 猫狗案例,我们想想狗一般就是看门,猫一般就是作为宠物了,对不.但是,现在有很多的驯养员或者是驯的,这应该属于经过特殊的培训训练出来的,对不.所以,这些额外的动作定义到动物类中就不合适,也不适合直 ...

    9. Java基础——collection接口

      一.Collection接口的定义 public interfaceCollection<E>extends iterable<E>  从接口的定义中可以发现,此接口使用了泛型 ...

    随机推荐

    1. 第15.19节 PyQt(Python+Qt)入门学习:自定义信号与槽连接

      老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.引言 本文利用中介绍了PyQt中的信号和槽机制,除了使用PyQt组件的已有信号外,PyQt和Qt ...

    2. PyQt学习随笔:Model/View开发时在view数据项中设置不同角色数据的方法

      在往Model中通过QStandardItem等类插入数据项时,除了实际插入的存储数据,还可以设置不同角色(请参考<PyQt学习随笔:Model/View中诸如DisplayRole的数据角色及 ...

    3. python中的Restful

      哇,昨天组里进行总结的时候,小哥哥和小姐姐真是把我给秀到了,跟他们一比,我总结的太垃圾了,嘤嘤嘤.因为我平常不怎么总结,总结的话,有word还有纸质的,现在偏向于纸质,因为可以练练字.个人观点是,掌握 ...

    4. 【聊技术】在Android中实现自适应文本大小显示

      本周的聊技术话题和大家说说如何在Android中实现自适应文本大小显示. 想象一下,在布局中,通常显示文本的区域大小是固定的,但是文本长度并不总是固定的.比如列表中的文章标题.界面下方的按钮文本等等. ...

    5. Day7 【Scrum 冲刺博客】

      每日会议总结 昨天已完成的工作 方晓莹(PIPIYIng) 对接车位管理接口 处理对接接口遇到的bug和错误 方子茵(Laa-L) 暂无 黄芯悦(Sheaxx) 完成住户车位查询页面 完成住户物业报修 ...

    6. 在IDEA上 使用maven进行打包时报错: Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.2:jar

      报错内容: Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.10.2:jar (attach-javado ...

    7. 彻底搞懂js __proto__ prototype constructor

      在开始之前,必须要知道的是:对象具有__proto__.constructor(函数也是对象固也具有以上)属性,而函数独有prototype 在博客园看到一张图分析到位很彻底,这里共享: 刚开始看这图 ...

    8. POI2009 KON-Ticket Inspector

      题目链接 Description 一辆火车依次经过 \(n\) 个车站,顺序是 \(1, 2, 3, ..., n - 1, n\).给定 \(A_{i, j}\) 表示从 \(i\) 站上车,\(j ...

    9. JApiDocs(自动生成接口文档神器)

      JApiDocs教程 前言 作为一名优秀的程序员来说,由于涉及到要与前端进行对接,所以避免不了的就是写接口文档.写完接口文档,一旦代码返回结果,参数等出现变动,接口文档还得随之改动,十分麻烦,违背了我 ...

    10. centos7 安装netstat命令工具

      [root@node01 yum.repos.d]# yum install -y net-tools Loaded plugins: fastestmirror Loading mirror spe ...