《从C/C++到Java入门指南》- 28.接口

接口

对比抽象类

抽象类我们知道是一个类,但是里面的方法都是空的,需要由抽象类的子类继承后来实现,可以说抽象类定义了一种类型类的规范。

接口也是一样的东西,接口也是一种抽象的载体,只定义方法名,相当于是定义了一种规范,需要被别的类来实现。

区别在于,一个类可以实现很多接口,但抽象类只能被子类实现。

接口的强大之处在于把方法从类中剥离出来,更加的模块化,更加自由。

定义接口

java 复制代码
public interface Myinterface {
	public void draw();
}

实现接口

实现一个接口方法,这个方法打印一句话。

java 复制代码
public interface Myinterface {
	public void draw();
}

class Myclass implements Myinterface {
	@Override
	public void draw() {
		System.out.println("Drawing!");
	}
}

public class Main {
	 public static void main(String args[]) {
		 Myclass my = new Myclass();
		 my.draw();
	 }
}

接口继承

接口之间也可以相互继承,使用extends关键字。

java 复制代码
public interface NewInterface extends Myinterface {
	public void hello();
}

这样子接口的方法体实际上会多一个。

接口的多重继承

由于接口的特殊性,接口可以进行多重继承,也就是继承多个接口。

java 复制代码
interface FatherInterface {
	public void work();
}

interface MotherInterface {
	public void make_up();
}

interface childInterface extends FatherInterface, MotherInterface {
	public void cry();
}

public class Main {
	 public static void main(String args[]) {
		 System.out.println("Run");
	 }
}

接口的默认方法

java 复制代码
interface DefaultInterface {
	default void run() {
		System.out.println("Run");
	}
}


class A implements DefaultInterface {
	@Override
	public void run() {
		DefaultInterface.super.run();
	}
}

public class Main {
	 public static void main(String args[]) {
		 A a = new A();
		 a.run();
	 }
}

可以看到,这里定义了一个接口,在接口中有一个默认方法。类A实现了该接口并且调用了接口的默认方法。

接口的静态方法

所谓接口静态方法就是static方法。

java 复制代码
interface DefaultInterface {
	static void run() {
		System.out.println("Run");
	}
}

public class Main {
	 public static void main(String args[]) {
		 DefaultInterface.run();
	 }
}

顾名思义,静态方法嘛,可以使用接口来直接调用。

相关推荐
要争气14 小时前
5 二分查找算法应用
java·数据结构·算法
空荡forevere14 小时前
《操作系统真象还原》 第十章 输入输出系统
开发语言·c++·操作系统
郑..方..醒14 小时前
java实现ofd转pdf
java·pdf
道可到14 小时前
阿里面试原题 java面试直接过06 | 集合底层——HashMap、ConcurrentHashMap、CopyOnWriteArrayList
java·后端·面试
狼爷14 小时前
从面试翻车到原理吃透:详解 synchronized 锁不住 Integer 的真相
java
麦麦鸡腿堡14 小时前
Java的封装
java·开发语言
wearegogog12314 小时前
Centos7下docker的jenkins下载并配置jdk与maven
java·docker·jenkins
青云交15 小时前
Java 大视界 -- Java 大数据在智能家居设备联动与场景自动化中的应用
java·大数据·智能家居·数据采集·设备联动·场景自动化·逻辑实现
野犬寒鸦15 小时前
从零起步学习MySQL || 第一章:初识MySQL及深入理解内部数据类型
java·服务器·数据库·后端·mysql
自由的疯15 小时前
java spring blob 附件 下载
java·后端·架构