浅谈抽象类和接口的区别和联系

浅谈抽象类和接口的区别和联系

一、抽象类
(1)abstract修饰的类为抽象类,此类不能有对象,(无法对此类进行实例化,说白了就是不能new);
(2)abstract修饰的方法为抽象方法,此方法不能有方法体(就是什么内容不能有);
(3)关于抽象类的使用特点:抽象类不能有对象,(不能用new此关键字来创建抽象类的对象);有抽象方法的类一定是抽象类,但是抽象类中不一定有抽象方法;
(4)抽象类中的抽象方法必须在子类中被重写。
(5)子类实现方法必须含有相同的或者更低的访问级别(public->protected->private)。抽象类的子类为父类中所有抽象方法的具体实现,否则也是抽象类。

使用抽象类的意义:
(1)有些东西不一定是一个人写的,所以有些放法在当时有可能写不出来,所以就写个大概。
(2)抽象方法不能有方法体,在方法后面加一个大括号而里面什么都不写也是不行的,编译器会报“abstract methods do not specify a body”。
(3)当一个类继承抽象类的时候,这个类必须去重写所继承的抽象类的抽象方法,否则编译器会报“The type Cat must implement the inherited abstract method Animal.eat()”的错误。

二、接口
(1)接口中的所有属性默认为:public static final ****。
(2)接口中的所有方法默认为:public abstract ****。
(3)接口不再像类一样用关键字 extends去“继承”,而是用 implements 去“实现”,也就是说类和接口的关系叫做实现,(例如:A类实现了B接口,那么成为A为B接口的实现类。而类与类之间的继承的话,叫做A类继承了B类,其中B类即为A类的父类)。实现接口与类的继承比较相似。
(4)一个类可以实现多个接口,但只能继承于一个类,所以可以通过这种方式来实现多继承。
(5)接口中的方法默认修饰符为“public abstract”。
(6)在接口中所有的属性的修饰符都默认为"public static final"。

三、抽象类和接口的区别和联系
(1)抽象类描述的是“是不是”的问题,而接口描述的是“有没有”的问题;接口强调特定功能的实现,而抽象类强调所属关系。
(2)接口只有定义,不能有方法的实现,而抽象类可以有定义与实现,方法可在抽象类中实现。
(3)实现接口的关键字为implements,继承抽象类的关键字为extends。一个类可以实现多个接口,但一个类只能继承一个抽象类。所以,使用接口可以间接地实现多重继承。
(4)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public、abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。
(5)接口被用于常用的功能,便于日后维护和添加删除,而抽象类更倾向于充当公共类的角色,不适用于日后重新对立面的代码修改。功能需要累积时用抽象类,不需要累积时用接口。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值