【尚硅谷-Java学习】6.10 接口 interface

其它关键字:

其它关键字:

一、功能

  • 多继承:Java不支持多继承,因此当需要从多个类中派生一个子类时,需要使用接口。
  • 提取多个子类共有的功能。例如子弹、气球都可以飞,将飞封装成接口。

二、接口的使用

  • 使用 interface 定义:interface 接口名{ }
  • Java中,接口和类是并列的结构
  • 定义接口中的成员:
    • JDK 7 及以前,只能定义 全局常量public static final 和 抽象方法public abstract ,定义时可以省略,例如int MIN_SPEED = 1;以及void stop();
    • JDK 8:还可以定义静态方法public static void 方法名(){//...}、默认方法public default void 方法名(){//...}。静态方法只能通过接口调用。默认方法可以通过实现类的对象调用,也可以被实现类重写。
  • 接口中不能定义构造器,意味着接口不能实例化

  • Java中通常让类实现(implements)接口。class 类名 implements 接口名 { }
    • 如果实现类覆盖了接口中的所有抽象方法,那么该类可以实例化。否则该类仍是一个抽象类。
  • 类可以实现多个接口:class 类名 extends 父类 implements 接口1,接口2 { }

  • 接口和接口之间可以有继承关系:interface 接口1 extends 接口2,接口3 { }

  • 接口具有多态性
    有接口USB,定义starts()、stop()两个方法。
    有实现类Flash重写了starts()、stop()。
    定义类Computer,内部有传输数据的方法transferData(USB usb)
class Computer{
	public void transferData(USB usb){
		usb.start();
		System.out.println("开始传输");
		usb.end();
	}
}

运行代码:

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

可以看到:定义transferData(USB usb)方法时,形参是接口USB,实际传入的是Flash类的实例对象。

  • 接口实际上是定义的一种规范。例如JDBC中连接数据库的接口,将 添加 规定为 add()等等…但接口中并没有具体的方法体。针对不同的数据库,对接口有不同的实现类,这些实现类称为驱动接口的主要用途就是被实现类实现,开发项目往往是面向接口编程。

  • 接口的匿名实现类接口名 对象名 = new 接口名(){ //重写方法};,匿名实现类的对象是有名的。例如:
	USB phone = new USB(){
			@Override
			public void start() {
				
			}

			@Override
			public void end() {
				
			}
};
  • 接口的匿名实现类的匿名对象。例如:
	computer.transferData(new USB(){

			@Override
			public void start() {
				
			}

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

三、接口的应用

代理模式 Proxy
工厂模式

四、当父类和接口有冲突

当子类继承的父类和实现的接口中有同名的:

  • 有同名的属性时:编译错误。
  • 有同名的方法时:子类调用时运行的是父类的方法。

五、当接口与接口有冲突

当子类实现的接口中有同名的:

  • 有同名的默认方法:编译错误。报错:接口冲突。子类必须重写该方法。想调用接口中的默认方法时:接口.surper.方法名();
  • 有同名的抽象方法:由于子类会重写抽象方法,调用的是子类重写的。

六、抽象类和接口有哪些共同点、区别?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值