2021-04-12 接口

第十节 接口

什么是接口

接口的语法

接口相当于特殊的抽象类,定义方式,组成部分与抽象类类似
没有构造方法,不能创建对象
只能定义公开静态常量和公开抽象方法
属性前面的 public static final写不写都默认存在。这里的属性只能显式初始化,因为接口中只有公开静态常量和公开抽象方法,没有其他内容,所以只能在初始化时赋值。
方法前面的public abstract写不写都存在,用abstract修饰,所以方法没有方法体,只能让接口的实现类重写此方法。

interface myInterface{
	public static final String field="value";
	//field="value1";接口中的方法不能二次赋值。
	public abstract void method();
}
概念

微观概念:接口是一种能力和约定
接口的定义:代表了某种能力
方法的定义:能力的具体要求
经验:
java为单继承,当父类的方法种类无法满足子类需求时,可实现接口扩充子类能力
接口支持多实现,可为类扩充多种能力

接口与类的异同

与抽象类的异同

相同:
可编译成字节码文件,接口也可以编译成字节码文件
不能创建对象,因为没有构造方法
可作为引用类型,对象名代表地址
接口的实现类具备Object类中所定义的方法
不同:
所有属性都是公开静态常量,隐式使用public static final修饰
所有方法都是公开抽象方法,隐式使用public abstract 修饰
没有构造方法 动态代码块 静态代码块只有公开静态常量和公开抽象方法
原因:
接口中定义的属性必须是public static final修饰,而且这三个修饰符的顺序可以随意
public 公共的,是一种标准,
static 接口中无法直接创建对象,所有必须是static修饰,才能让其他对象直接通过接口本身访问
final 接口中没有构造方法,没有代码块,所以只能在声明的时候为属性赋值
接口中的方法必须是public abstract修饰
定义接口可以不必考虑他将来的具体实现,还需要提供一个基本的框架即可
接口中不能继承Object类,
接口和类是并列关系,
object中的方法已经被实现,假如接口可以继承object类,那么object的所有方法将被接口继承过来,那么就不符合接口中不能有方法实现的原则。

接口的引用

接口的规范

任何类在实现接口时,必须实现接口中所有的抽象方法,否则此类为抽象类。
实现接口中的抽象方法时,访问修饰符必须是public。

接口引用

同父类一样,接口也可声明为引用,并指向实现类对象
注意:
仅可调用接口中所声明的方法,不可调用实现类中独有的方法
可强转回实现类本身类型,进行独有方法的调用

接口的多态

多种不同类型的引用指向同一个对象时,表示看待对象的视角不同
不同引用所能看到的对象的范围不同,只能调用自身类型中所声明的部分
不同引用类型,仅可调用自身类型中所声明的方法

public class MyInterface {
	public static final int num=10;
	public static void main(String[] args) {		
//多种不同类型的引用指向同一个对象时,表示看待对象的视角不同		
		Dog myDog=new Dog();//把狗当狗看
		Animal a=myDog;//向上转型,装箱,把狗当动物看
		Runable r=myDog;//将狗当做会跑的东西看
		Swimmable s=myDog;//将狗当做会游的东西看,		
//不同引用所能看到的对象范围不同,只能调用自身类型中所声明的部分	
	}
}
interface Runable{
	public abstract void run();
}
interface Swimmable{
	void swim();
}
abstract class Animal{
	public void eat() {}
	public void sleep() {}
}
class Dog extends Animal implements Runable,Swimmable{
	public void run() {
		System.out.println("dog在跑");
	}
	public void swim() {
		System.out.println("dog在游泳");
	}
	public void eat() {
		System.out.println("dog在吃");
	}
	public void shout() {
		System.out.println("dog在叫");
	}
}
常见关系

1、类与类:
单继承,extends 父类名称/
2、类与接口:
多实现,
implements 接口名称1,接口名称2,接口名称n
3、接口与接口:
多继承
extends 父接口1,父接口2,父接口n

常量接口

概念

将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理,提高代码的可读性

什么是接口

宏观概念:
接口是一种标准
接口的实现着 接口/标准 接口的使用者
U盘 usb 笔记本电脑上的用的usb接口
usb风扇
手机充电器

接口回调

接口回调:
先有接口的使用者,后有接口的实现者
4:程序员
工具的调用者
3:程序员
接口的实现着
2:工具
接口的使用者
1:接口
标准

接口的好处

程序的耦合度降低
更自然的使用多态
设计与实现完全分离
更容易搭建程序框架
更容易更换具体实现

总结

什么是接口

微观:接口是一种能力和约定
宏观:接口是一种标准

接口与类的异同

没有构造方法,仅可定义公开静态常量和公开抽象方法

接口的应用

java为单继承,当父类提供的方法无法满足子类需求时,可实现接口扩充子类能力

接口规范

任何类在实现接口时:必须实现接口中所有的抽象方法,否则此类为抽象类
实现接口中的抽象方法时:访问修饰符必须是public

什么是常量接口

将多个常用于表示状态或固定值的变量,以静态常量的形式定义在接口中统一管理

什么是接口回调

现有接口的使用者,后有接口的实现者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值