【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的抽象:接口和抽象类.这两者有太多相似的地方,又有太多不同的地方.很多人在初学的时候 ...
随机推荐
- JS和OC交互的简单应用
先简单地说一下思路吧 需求:在App中嵌入一个webView,已经有了网址,但是需要去掉这个网页中的一些内容 解决方案:取到webView要加载的网址,对这个网址对应的网页信息进行修改 简单描述: 遵 ...
- 神经网络与深度学习笔记 Chapter 6之卷积神经网络
深度学习 Introducing convolutional networks:卷积神经网络介绍 卷积神经网络中有三个基本的概念:局部感受野(local receptive fields), 共享权重 ...
- Bug列表
1.Space is not allowed after parameter prefix ': 这个问题主要原因是Hibernate不能识别SQL语句中的":="导致的网上有其他 ...
- .NET入行之工作后
成长这条路上,有一些事已经渐渐的消失模糊的脑海里,而有一些事,则历历在目,终生铭记. 一切都是从大二下学期快结束的那段培训课程开始的,从此也算是入门了,这也是一条不归路. 在.NET入行之工作前一文中 ...
- 安装zsh后出现命令行无法识别已安装的node
安装zsh之后,在命令行输入 node -v,会出现 command not found: node. 出现原因是:使用bash输入终端指令识别得是~/.bash_profile,而安装zsh则无法识 ...
- -webkit-overflow-scrolling 与滚动回弹效果.
参考来源:https://developer.mozilla.org/zh-CN/docs/Web/CSS/-webkit-overflow-scrolling https://www.w3cways ...
- mysql 时间戳格式化函数FROM_UNIXTIME和UNIX_TIMESTAMP函数的使用说明
我们一般使用字段类型int(11)时间戳来保存时间,这样方便查询时提高效率.但这样有个缺点,显示的时间戳,很难知道真实日期时间. MySQL提供了一个时间戳格式化函数from_unixtime来转换格 ...
- canvas粒子系统的构建
前面的话 本文将从最基本的imageData对象的理论知识说开去,详细介绍canvas粒子系统的构建 效果演示 下面是实例效果演示,博文结尾有全部源码 imageData 关于图像数据imageDat ...
- 更改pip源至国内镜像,显著提升下载速度
经常在使用Python的时候需要安装各种模块,而pip是很强大的模块安装工具,但是由于国外官方pypi经常被墙,导致不可用,所以我们最好是将自己使用的pip源更换一下,这样就能解决被墙导致的装不上库的 ...
- Docker+Gogs搭建个人Git服务
欢迎 经常使用Github的我,Github它功能强大,操作简单,不用FQ,所以大家会使用Github进行代码托管,但是,Github的私仓收费的,而且对于普通个人用户来说,价格也不便宜.很多人搭建自 ...