JAVA接口和抽象类详细总结

什么是接口?

什么是接口?我们可以比喻成一个USB接口,一个电脑中有一个USB接口,它可以插我们的鼠标,键盘,U盘等设备,然后我们的电脑又有不同的品牌,所以为了统一我们的鼠标,键盘和U盘等设备就需要统一这个插设备的接口,不然这样就会很麻烦。接口就是一种契约和协议。

例如我们写一个Fly的接口,那么Airplane实现了它就会在天上飞,直升机实现了它也可以在天上飞,战斗机实现了它也可以在天上飞。

定义一个接口使用的关键字是interface:

public interface FlyAble {
	void fly();
}

Airplane实现FlyAble的接口使用的关键字是implements

public class Airplane implements FlyAble{
	@Override
	public void fly() {
		System.out.println("飞机飞");
	}
}

测试,这里就是用接口实现的多态:

public class AirplaneTest {
	public static void main(String[] args) {
		FlyAble airplane = new Airplane();
		airplane.fly();
	}
}

什么是抽象类?

什么是抽象类?抽象类可以理解为将一个事物抽象出来,例如小狗和小猫都会跑都会吃东西,那么我们就可以抽象出来一个动物类,他们都有相同的功能跑和睡觉,那么run和eat就可以抽象成一个方法。这个抽象类中抽取了方法功能,没有功能的实现,这个就是抽象方法。
有抽象方法的类一定是抽象类,抽象类不一定有抽象方法。

例如我们写一个动物的抽象类,然后有一个抽象方法run,然后Dog类继承动物的抽象类实现run的方法。

定义一个抽象类,并且定义一个抽象方法,使用关键字abstract,抽象方法没有方法体。

public abstract class Animal {
	public abstract void run();
}

定义一个dog类并且继承Animal这个类,实现run的方法。

public class Dog extends Animal{
	@Override
	public void run() {
		System.out.println("小狗跑");
	}
}

测试类,这里也实现了多态的效果:

public class AnimalTest {
	public static void main(String[] args) {
		Animal dog = new Dog();
		dog.run();
	}
}

接口和抽象类的区别:
1.接口的方法默认是public,所有的方法在接口中不能有实现(jdk1.8开始接口可以有默认实现而抽象类可以有非抽象的方法)。
2.接口中除了static、final变量,不能有其他变量,而抽象类中则不一定。
3.一个类可以实现多个接口,但只能实现一个抽象类。接口自己本身可以通过extends关键字扩展多个接口。
4.接口方法默认是public,抽象类方法可以有public、protected和default这些修饰符。
5.从设计层面来说,抽象是对类的抽象,是一种设计模板,而接口是对行为的抽象,是一种行为的规范。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值