栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

【Java -- 接口】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Java -- 接口】

Java -- 接口
  • 接口的概念
    • 定义接口
    • 类实现接口
  • 接口的特点
  • 案例

接口的概念

官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

实际上接口是对 Java 不能多继承的一种弥补手段。和抽象类很相似,接口用于制定一系列规范,不过接口比抽象类更抽象,可以理解为一种极致抽象的类。

定义接口
public interface Name {...}
类实现接口
Class ClassName implements InterfaceA, InterfaceB,... {...}
接口的特点
  1. 一个类只能继承一个父类,但可以实现多个接口(可以在继承一个父类的同时实现多个接口),类实现接口必须重写接口所有抽象类(抽象类不用);
  2. 接口可以继承接口,相当于对接口内容进行了扩展;
  3. 接口可以实现多态,使用高层引用常见低层实例(接口引用指向实现接口的类);
  4. 接口中不能定义构造方法,不能实例化;
  5. 接口与接口之间存在继承关系,一个接口可以继承多个接口;
Interface A extends InterfaceB, InterfaceC,... {...}
  1. 接口中的变量默认为也只能为 public static final,接口中的方法默认为 public abstract (JDK1.8以前接口中只能定义 public abstract 方法),都可省略;
  2. 从JDK1.8开始,除了 public abstract 方法外,接口中还可以定义 default 方法以及 static 方法;
  3. defaulf 方法只能出现在接口中,在接口中被 default 修饰的方法为普通方法,可以直接写方法体。类实现接口时不必须重写 default 方法,会直接继承该方法。
  4. 当类实现了多个接口包含相同的 default 方法时,此时不知道该继承哪个 default 方法,必须重写 default 方法 ;
  5. 当继承的父类中方法 A ,实现的接口中也有一个 default 方法 A 时,继承父类中的方法 A(类优先原则);
案例

定义接口 Car :

public interface Car {
	public abstract void start();
	void brake(); // 接口中的方法默认 public abstract,可省略
	void speedUp();
	
	// 接口中可以定义default方法(default方法只能在接口中)
	// 接口中的default方法可直接实现方法体,类实现接口时不必须重写,可直接调用;
	// 省略了public
	default void leftTurn() {
		System.out.println("Make a left turn");
	}
}

定义 Benz 类实现接口 Car:

public class Benz implements Car {
	private double price;
	
	public Benz() {
		System.out.println("Benz");
	}
	
	public Benz(double price) {
		this.price = price;
	}
	
	public void start() {
		System.out.println("Benz starts");
	}
	
	public void brake() {
		System.out.println("Benz brakes");
	}
	
	public void speedUp() {
		System.out.println(" Benz speedups");
	}
	
	public double getPrice() {
		return price;
	}
}

测试类:

public class InterfaceDemo {
	public static void main(String[] args) {
		Benz benz = new Benz();
		
		benz.start();
		benz.leftTurn(); // 类继承了接口的 default 方法
		
		System.out.println("----------------");
		
		// 上转型
		Car car = new Benz();
		
		car.start();
		car.leftTurn();
	}
}

输出:

Benz
Benz starts
Make a left turn
----------------
Benz
Benz starts
Make a left turn
转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/1039823.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号