JAVA进阶之 接口

一:接口

1.接口也是一种“引用数据类型”。编译之后也是一个class字节码文件。
2.接口是完全抽象的(抽象类是半抽象的)或者说接口是特殊的抽象类。
3.接口的定义格式:语法:
【修饰符列表】 interface 接口名{}
4.接口支持多继承,一个接口可以继承多个接口
5.接口在开发中的作用:面向接口编程

public class Test01{
	main{
	//访问接口中的常量
	sout(MyMath.PI);
	}
}
//定义接口
interface A{
}
//接口支持继承
interface B extends A{
}
//一个接口可以继承多个接口
interface C extends A,B{
}
//我的数学接口
interface MyMath{
	//常量
	//接口中随便写一个变量就是常量
	//public static final double PI = 3.1415926;
	double PI = 3.1415926;
	int k = 100;
	


 //抽象方法
 //public abstract int sum(int a,int b);
 //接口中都是抽象方法,那么在编写代码的时候。public abstract可以省略
 int sum(int a,int b);
 //接口中的方法不能带有主体
 void doSome();
//相减的抽象方法
int sub(int a,int b);
}

接口的基础语法:
1.类和类之间叫做继承,类和接口之间叫做实现,继承是extends,实现是implements。
重点!!!:当一个非抽象的类实现接口的话,必须将接口中所有的抽象方法全部实现(覆盖,重写)。
例如:
interface MyMath{
double PI = 3.14;
int sum(int a,int b);
int sub(int a, int b);
}
class MyMathImpl implements MyMath{
//重写/覆盖/实现 接口中的方法(实现!)
public int sum(int a,int b){
return a+b;
}
public int sub(int a,int b){
return a-b;
}
}

重点:一个类可以实现多个接口!
java中类和类之间只支持单继承。

有一个结论:
无论是向上转型还是向下转型,两种类型之间必须要有继承关系。
没有继承关系编译器会报错。(这句话不适用在接口方面)
向下转型养成好习惯。转型之前先if+instanceof进行判断。

总结一句话:解耦合!
面向接口编程,可以降低程序的耦合度,提高程序的扩展力。符合OCP开发原则。
接口的使用离不开多态机制。(接口+多态才可以达到降低耦合度)
任何一个接口都有调用者和实现者。
接口可以将调用者和实现者解耦合。
调用者面向接口调用。
实现者面向接口编写实现。

进行大规模项目的开发,一般都是将项目分离成单个模块,模块和模块之间采用接口衔接,降低耦合度。

类型和类型之间的关系
is a()继承, has a(关联), like a(实现)
is a:
cat is a Animal(猫是一个动物
凡是能够满足is a的表示“继承关系”

has a:
i has a pen(我有一只笔
凡是能够满足has a 关系的表示“关联关系”
关联关系通常以“属性”的形式存在

like a:
cooker like a foodmenu(厨师像一个菜单一样
凡是能够满足like a 关系的表示“实现关系”
实现关系通常是:类实现接口
A implements B

抽象类和接口有什么区别?

	extends和implements可以共存,extends在前,implements在后。
	使用接口写代码的时候,可以使用多态(父类型引用指向子类型)
	一个非抽象的类,实现接口的时候,必须将接口中所有方法加以实现
	接口中方法不能有方法体。
	接口中所有的元素都是public修饰的
	接口中抽象方法的public abstract可以省略
	接口中常量的public static final可以省略
	
	抽象类是半抽象的。
	接口是完全抽象的。

	抽象类中有构造方法。
	接口中没有构造方法。

	接口和接口之间支持多继承。
	类和类之间只能单继承。
	
	一个类可以同时实现多个接口。
	一个抽象类只能继承一个类(单继承)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值