接口
1.接口是一种引用数据类型
2.接口是完全抽象的,(抽象类是半抽象的)或者说接口是一个特殊的抽象类
3.接口怎么定义的,语法是什么?[修饰符列表] interface 接口名{}
4.接口支持多继承,一个接口可以继承多个接口。
5.接口中只包含2部分:1、常量 ;2、抽象方法
6.接口中所有的元素是public修饰的(都是公开的)
7.接口中的方法都是抽象方法,所以接口中方法不能有方法体。
8.接口中的常量:public static final可以省略;public static final String name=“zs”;=====>String name=“zs”;
9.接口中抽象方法的public abstract可以省略
10.一个非抽象的类,实现接口的时候,必须将接口所有的方法加以实现。
11.一个类可以实现多个接口
12.extends和implements可以共存,extends在前,implements在后
13.使用接口,写代码的时候,可以使用多态(父类型引用指向子类型对象)
类和类之间叫继承(不支持多继承);类和接口之间叫实现(支持多实现)
一个类可以实现多个接口吗?
可以实现
这个机制弥补了java中哪个缺陷?
java中类和类只支持单继承,实际上单继承为了简单出现的,现实生活中存在多继承,java中的接口弥补了单继承带来的缺陷
多态:
//调用接口面向对象编程
//编译看左,运行看右(编译绑定是父类型,运行时绑定子类型)
MyMath mm=new MyMathImpl();
extends和implement同时出现
//父类:动物
class Animal{
}
//子类继承父类,并且实现鱼
class Fish extends Animal implements Flyable{
@Override
public void fly() {
System.out.println("鱼儿想飞了 ")
}
}
interface Flyable{
void fly();
}
class pp {
public static void main(String[] args) {
Flyable flyable = new Fish();
flyable.fly();
}
}
接口在开发中作用:
作用:解耦和
接口在开发中的作用,类似于多态在开发中的作用。
提高代码的扩展力,降低代码的耦合度,符合ocp开发原则。
接口的使用离不开多态机制。(接口+多态才可以达到降低耦合度)
接口可以解耦合,解开的是谁和谁的耦合
public class Test {
public static void main(String[] args) {
FoodMeau foodMeau = new ChinaChuShi();
GuKe guKe = new GuKe(foodMeau);
//顾客点餐
guKe.eat();
}
}
class GuKe {
private FoodMeau foodMeau;
public GuKe() {
}
public GuKe(FoodMeau foodMeau) {
this.foodMeau = foodMeau;
}
public void setFoodMeau(FoodMeau foodMeau) {
this.foodMeau = foodMeau;
}
public FoodMeau getFoodMeau() {
return foodMeau;
}
public void eat() {
FoodMeau foodMeau = this.getFoodMeau();
foodMeau.XihongShiDanTang();
foodMeau.yuXiangRouSi();
}
}
interface FoodMeau {
void yuXiangRouSi();
void XihongShiDanTang();
}
class ChinaChuShi implements FoodMeau {
@Override
public void yuXiangRouSi() {
System.out.println("中餐师傅做鱼香肉丝");
}
@Override
public void XihongShiDanTang() {
System.out.println("中餐厨师做西红柿蛋汤");
}
}
结果 :
中餐厨师做西红柿蛋汤
中餐师傅做鱼香肉丝