JAVA学习之接口

一、基础语法

1、接口也是一种引用数据类型,编译之后也是一个class字节码文件
2、接口是完全抽象的(抽象类是半抽象的)
3、接口的定义

	[修饰符列表] interface 接口名{
	}

4、接口支持多继承,一个接口可以继承多个接口

interface C extends A, B{
}

5、接口中只包含两部分内容,一部分是常量,一部分是抽象方法。除此之外,接口中没有其他内容了
6、接口中所有的元素都是public修饰的(都是公开的)
7、接口中的抽象方法定义时,public abstract可以省略
8、接口中的常量的public static final可以省略
9、接口中的方法不可以带有方法体(不带有大括号)
10、类和类之间叫做继承,类和接口之间叫做“实现”。但仍可以将“实现”看做“继承”。
实现用implements关键字完成。
11、实现的时候需要将接口中的抽象方法进行重写,并且加上public
12、一个类可以实现多个接口。这种机制弥补了类和类之间仅支持单继承。实际上单继承是为了简单而出现,现实世界中存在多继承,Java中的接口弥补了单继承带来的缺陷
13、当继承和实现都存在的时候,extends在前,implements在后

public class Test{
	public static void main(String[] args){
		Flyable f = new Cat();
		f.fly();
	}
}

class Cat extends Animal implements Flyable{
	//能插拔的叫做接口
	//给猫插上了翅膀实现了飞翔
}

二、接口在开发中的作用

1、接口在开发中的作用类似多态的作用
多态:面向抽象编程,不要面向具体编程,降低程序的耦合度,从而提高了程序的扩展力

	public class Master{
		public void feed(Animal a){
			/*面向Animal父类编程,父类是比子类(Cat Dog)更抽象的。
			所以我们称为面向抽象编程*/
}

	}

2、接口是完全抽象的,以后面向抽象编程可以改为“面向接口编程”有了接口就有了可插拔性,就像内存条一样,坏了可以拆了换一根,也即高扩展性
举例:
去饭馆吃饭的过程有接口吗?
:菜单是一个接口(菜单上抽象的菜的照片)
顾客面向菜单点菜,调用接口
厨师负责把菜做好,是接口的实现者
在此中接口的作用:
菜单使得顾客和厨师解耦合了,顾客不用找厨师,厨师不要找顾客,他们之间完全依靠抽象的菜单进行沟通(使得调用者和实现者之间的耦合度减低)

3、类型和类型之间的关系
is a:
Cat is an Animal
凡是满足is a 的表示继承关系
A extends B

has a:
I have a pen
凡是满足has a 的表示关联关系
关联关系通常以属性的形式存在
A{
B b;
}

like a:
Cooker like a FoodMenu(功能就像菜单)
凡是能够满足like a的表示实现关系
实现关系通常是:类实现接口
A implements B

三、抽象类和接口的区别

语法区别:

  1. 抽象类是半抽象的,接口是完全抽象的
  2. 抽象类中有构造方法,接口中没有
  3. 接口与接口之间支持多继承,类与类之间只能单继承
  4. 一个类可以同时实现多个接口,一个抽象类只能继承一个类
  5. 接口中只允许出现常量和抽象方法
  6. 接口一般是对行为的抽象,范围比抽象类稍微大一点

具体项目用抽象类还是接口,在实践中体会,一般来说接口用的更多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值