Java接口

一、定义及使用

解释:接口就是规范,定义的是一组规则,体现了现实世界中“如果你是/要...则必须能... ”的思想。继承是一个“是不是”的关系,而接口实现则是“能不能”的关系。

规则:

① 接口中不能定义构造器,即接口不可实例化。

② 类可以实现多个接口

③ 接口与接口之间可以多继承

④ 接口的具体使用,体现了多态性

JDK7之前:只能定义全局常量和抽象方法

全局常量:public static final

抽象方法:public abstract

interface USB {
    public static final int lines  = 10;
    
    int plugins = 3; // 可以省略public static final

	public abstract void start();

	void end(); // 可以省略public abstract
}

class Flash implements USB {

	@Override
	public void start() {

	}

	@Override
	public void end() {

	}

}

JDK8:除了定义全局常量和抽象方法之外,还可以定义静态方法,默认方法。

知识点:

① 接口中定义的静态方法,只能通过接口来调用

② 可以通过实现类的对象,调用接口中的默认方法

③ 子类的父类和子类实现的接口中声明了同名同参数的默认方法,则类优先

④ 类实现的多个接口中都声明了同名同参数的默认方法,则实现类必须重写默认方法,不然就会“接口冲突”。

public class InterfaceTest {
	public static void main(String[] args) {
		
		SubClass subClass = new SubClass();
		Example.method1(); // 通过接口调用静态方法
		subClass.method2(); // 通过对象调用默认方法
	}
}

interface Example{
	
	// 静态方法
	public static void method1() {
		
	}
	
	// 默认方法
	public default void method2() {
		
	}
}

class SubClass implements Example{
	
}

 

二、调用接口方法的几种形式

class Computer {

	public void transferData(USB usb) {
		usb.start();
		usb.end();
	}
}

1、创建接口的非匿名实现类的非匿名对象

Flash flash = new Flash();
computer.transferData(flash);

2、创建接口的非匿名实现类的匿名对象

computer.transferData(new Flash());

3、创建接口的匿名实现类的非匿名对象。类似于抽象类

USB usb = new USB() {
			
	@Override
	public void start() {
				
	}
			
	@Override
	public void end() {
				
	}
};
computer.transferData(usb);

4、创建接口的匿名实现类的匿名对象

computer.transferData(new USB(){

	@Override
	public void start() {
				
	}

	@Override
	public void end() {
				
	}
			
});

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值