【java】聊聊java里的接口
接口的概念
├─myInterface.java └─Myclass.java
myInterface.java :
public interface myInterface {
int function ( int arg ) ;
}
public class Myclass implements myInterface{
public int function(int arg) {
;
}
}
接口的一些特性
public interface myInterface {
private int a;
}
Illegal modifier for the interface field myInterface.a; only public, static & final are permitted
对比是学习的一种方式,下面我对接口的介绍,将在一系列的对比中展开
接口和超类的差异
public class superClass { ... }
public class subClass extends superClass { ...}
public interface myInterface { ... }
public class Myclass implements myInterface{ ...}
超类是一个“模板”,而接口是一种“契约”

The type Myclass must implement the inherited abstract method myInterface.function(int)

超类继承

接口实现

public class SuperClass {
public String getMoney () {// 获取金钱
return "Money";
}
public String getHouse () { // 获取房子
return "house";
}
public String getCar () { // 获取车子
return "car";
}
}
public class Myclass extends SuperClass{
public String getAll () {
return getMoney() + " " + getCar() + " " + getHouse();
}
public static void main(String args []) {
Myclass me = new Myclass();
System.out.println(me.getAll());
}
}
Money car house
public interface myInterface {
public String getMoney ();
public String getHouse ();
public String getCar ();
}
Myclass.java:
public class Myclass implements myInterface{
public String getMoney () {
return "Money";
}
public String getHouse () {
return "house";
}
public String getCar () {
return "car";
}
public String getAll () {
return getMoney() + " " + getCar() + " " + getHouse();
}
public static void main(String args []) {
Myclass me = new Myclass();
System.out.println(me.getAll());
}
}
Money car house
接口和抽象类的差异
abstract class AbstractClass {
public abstract int function ();
}
public class MyClass extends AbstractClass {
public int function() {
;
}
}
接口和抽象类的共同点
接口和抽象类的不同点
接口实现/接口继承和类继承的差异
一个类可以实现多个接口
// 没有这种写法,这是非法行为
public class MyClass extends SuperClass1,SuperClass2 { }
public class MyClass implements interface1, interface2 { }
├─TechXiaoBai.java // 主力类 ├─Blog.java // 接口1 └─Education.java // 接口2
public class TechXiaoBai implements Blog, Education {
// 作为一名技术小白每天要做的事情
public void study() { }
public void writeArticle() { }
}
public interface Blog {
void writeArticle (); // 写文章
}
public interface Education {
void study(); // 学习
}

java允许“接口多继承”
├─TechXiaoBai.java // 主力类 ├─Blog.java // 接口1 ├─Education.java // 接口2 ├─Undergraduate.java // 新增被Education接口继承的接口,接口2.1 └─Postgraduate.java // 新增被Education接口继承的接口,接口2.2
// “本科生”接口
public interface Undergraduate {
void learnBasicKowledge(); // 学习基础知识
}
// 研究生接口
public interface Postgraduate {
void doScientificRearch(); // 搞一搞科研啦
}
public interface Education extends Undergraduate, Postgraduate{
void study(); // 学习
}
public class TechXiaoBai implements Blog, Education {
// 每天要做的事情
public void study() { }
public void writeArticle() { }
public void learnBasicKowledge() { } // 新增方法
public void doScientificRearch() { } // 新增方法
}

public interface Education extends Undergraduate, Postgraduate{
void study(); // 学习
}
public interface Education extends Undergraduate, Postgraduate{
void study(); // 学习
void learnBasicKowledge(); // 学习基础知识
void doScientificRearch(); // 搞一搞科研啦
}
接口存在的意义
public interface Comparable<T>
{
int compareTo(T other) // parameter has type T
}
import java.util.Arrays;
public class Student implements Comparable<Student>{
private int score; // 每个学生的分数
public Student (int score) {
this.score = score;
}
public int getScore () { // 获取每个学生对象的分数
return this.score;
}
@Override
public int compareTo(Student other) { // 实现Comparable接口约定的compareTo方法
return this.score - other.score;
}
public static void main (String [] args){
Student [] stuArray = ]; // 声明Student类型的数组
stuArray[] = ); // 将三个Student对象赋给数组
stuArray[] = );
stuArray[] = );
stuArray[] = );
Arrays.sort(stuArray); // 进行从小到大的排序
; i<stuArray.length; i++){
System.) +"个学生对象的分数:" + stuArray[i].getScore());
}
}
}
排序后数组里第1个学生对象的分数: 排序后数组里第2个学生对象的分数: 排序后数组里第3个学生对象的分数: 排序后数组里第4个学生对象的分数:
){
// 对a[i]和a[j]进行排序
}
【java】聊聊java里的接口的更多相关文章
- JVM:从实际案例聊聊Java应用的GC优化
原文转载自美团从实际案例聊聊Java应用的GC优化,感谢原作者的贡献 当Java程序性能达不到既定目标,且其他优化手段都已经穷尽时,通常需要调整垃圾回收器来进一步提高性能,称为GC优化.但GC算法复杂 ...
- [JAVA设计模式]第一部分:接口、抽象类、设计原则
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- JAVA的免费天气api接口调用示例
step1:选择本文所示例的接口"免费天气api" url:https://www.juhe.cn/docs/api/id/39/aid/87 step2:每个接口都需要传入一个参 ...
- Java字节码里的invoke操作&&编译时的静态绑定与动态绑定
一个一直运行正常的应用突然无法运行了.在类库被更新之后,返回下面的错误. Exception in thread "main" java.lang.NoSuchMethodErro ...
- Java 8新特性之接口改善(八恶人-1)
Daisy Donergue 多莫歌·黛西 “By woman, you mean her?” 她也能叫女人? Java 8在13年9月发布,写这篇博文的时间已经是17年12月份了.来的有点晚,但是有 ...
- Java程序设计8——抽象类、接口与内部类
1 抽象类 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体.但在某些情况下,某个父类并不需要实现,因为它只需要当做一个模板,而具体的实现,可以由 ...
- 聊聊Java并发面试问题之公平锁与非公平锁是啥?
一.什么是非公平锁? 先来聊聊非公平锁是啥,现在大家先回过头来看下面这张图. 如上图,现在线程1加了锁,然后线程2尝试加锁,失败后进入了等待队列,处于阻塞中.然后线程1释放了锁,准备来唤醒线程2重新尝 ...
- Java集合框架之Map接口浅析
Java集合框架之Map接口浅析 一.Map接口综述: 1.1java.util.Map<k, v>简介 位于java.util包下的Map接口,是Java集合框架的重要成员,它是和Col ...
- Java基础之抽象类与接口
Java基础之抽象类与接口 对于面向对象编程来说,抽象是它的一大特征之一.在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候 ...
随机推荐
- lumen的自定义依赖注入
比如我现在有个token认证系统,目前我用mysql的token表实现,将来有可能会改成redis,怎么实现未来的无缝连接呢. 先定义一个合约文件app/Contracts/TokenHandler. ...
- Spring中Druid链接池的配置
本文记录了使用Druid的方法, 包括Spring和Spring boot中使用Druid的配置方法. Spring中配置Druid连接池 以链接mysql为例 1 添加druid依赖 <dep ...
- 命令行创建Maven项目卡住以及出错解决办法。
第一次通过命令行创建maven项目.结果,果不其然啊,还是出问题了,不过出问题比没有出问题强,知道哪里有问题并学会解决也是一种收获. 遇到的第一个问题,在从仓库下载东西的时候会卡住,我开始以为是网速问 ...
- Web前端学习开篇
首先想想自己喜欢干什么?想干什么?脑袋需要什么?什么对自己来说最重要?自己的规划? 本人数字媒体技术专业,想学Web前端开发有好长时间了,有一定的基础,所以就想进一步深入学习.谁料想,我怎么那么没有耐 ...
- Shrio授权验证详解
所谓授权,就是控制你是否能访问某个资源,比如说,你可以方位page文件夹下的jsp页面,但是不可以访问page文件夹下的admin文件夹下的jsp页面. 在授权中,有三个核心元素:权限,角色,用户. ...
- html js文字左右滚动插件
自己写过很多插件,但都是直接嵌入在了工程里,从来没有拿出来单独封装成一个文件过,这是第一次,希望是一个良好的开端. 一个文字过长而可以左右滚动的插件 <!DOCTYPE html> < ...
- dede织梦如何防止被黑客入侵渗透?
dede精简设置篇:避免被hack注射挂马 精简设置篇:不需要的功能统统删除.比如不需要会员就将member文件夹删除.删除多余组件是避免被hack注射的最佳办法.将每个目录添加空的index.htm ...
- 【渗透课程】第二篇下-HTTP协议的请求与响应深度剖析
[渗透课程]第二篇下-HTTP协议的请求与响应深度剖析 HTTP1.1目前支持以下7种请求方法: 常见的MIME类型如下: 第一个数字有五种可能的取值: 目录 什么是请求方法?什么是请求头? HTTP ...
- matplotlib 填充颜色
def huitu_host(nodes,total): x = np.arange(len(nodes)) plt.figure(figsize=(9,5)) plt.xticks(x,nodes) ...
- 框架整合——Spring与MyBatis框架整合
Spring整合MyBatis 1. 整合 Spring [整合目标:在spring的配置文件中配置SqlSessionFactory以及让mybatis用上spring的声明式事务] 1). 加入 ...