【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的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候 ...
随机推荐
- 【Ubuntu Desktop】安装主流桌面
ubuntu的桌面环境实在多,在这里选了几款主流的桌面环境,大家可以按需安装使用. 1.GNOME 2 Classic 经典老界面 gnome2 after reboot,choose GNOME ...
- C/C++ 对优先级与结合性的理解
优先级与结合性是指运算符与操作数的"紧密程度": 结合性表明了同一优先级的运算符对同一操作数的紧密程度: 如: a=b=c: 赋值运算符的结合性为从右至左: 所以a=b=c ...
- hadoop系列四:mapreduce的使用(二)
转载请在页首明显处注明作者与出处 一:说明 此为大数据系列的一些博文,有空的话会陆续更新,包含大数据的一些内容,如hadoop,spark,storm,机器学习等. 当前使用的hadoop版本为2.6 ...
- WeQuant交易策略—NATR
策略名称:NATR策略关键词:规范真实波幅.价格突破. NATR,是对ATR指标进行了标准化.主要应用于了解价格的震荡幅度和节奏,在窄幅整理行情中用于寻找突破时机.本策略在当前价格高于之前价格一定倍数 ...
- python爬虫之有道翻译
import urllib.request import urllib.parse import json class Translate(): def __init__(self): ...
- 线性代数-矩阵-【5】矩阵化简 C和C++实现
点击这里可以跳转至 [1]矩阵汇总:http://www.cnblogs.com/HongYi-Liang/p/7287369.html [2]矩阵生成:http://www.cnblogs.com/ ...
- pyhton安装pillow问题解决
最近在学习Python的微信处理相关,因wxpy库中的微信客户端需要接收二维码需要安装pillow,如下 class wxpy.Bot(cache_path=None, console_qr=Fals ...
- [2017-08-16]ABP系列——QuickStartB:正确理解Abp解决方案的代码组织方式、分层和命名空间
本系列目录:Abp介绍和经验分享-目录 介绍ABP的文章,大多会提到ABP框架吸收了很多最佳实践,比如: 1.N层 (复用一下上篇的图) 展现层(Personball.Demo.Web):asp.ne ...
- JRE 和 JDK 的区别
JRE顾名思义是java运行时环境,包含了java虚拟机,java基础类库.是使用java语言编写的程序运行所需要的软件环境,是提供给想运行java程序的用户使用的. JDK顾名思义是java开发 ...
- POI设置excel某列值为文本格式
excel单元格格式默认为[常规],当某列限定必须从下拉框选择一个纯数字文本的时候,必须将单元格格式设置为[文本]. 否则即使输入的值和下拉框的一致,excel都认为输入的值是常规类型,而下拉框的值为 ...