Java中抽象类和接口

接口和抽象类是对抽象概念进行定义的实现机制,两者对抽象概念的有很多相似,甚至在某些功能上的使用有着异曲同工的作用,但也有着相应的却别。

一、抽象类(abstract )
它定义了一组抽象的方法,至于这组抽象方法的具体表现形式有派生类来实现。同时抽象类提供了继承的概念,它的出发点就是为了继承。设计层次至下而上,先知道子类然后再从中抽象出相关父类。
抽象类使用注意事项:
1)抽象方法必须由子类来进行重写。
2)abstract不能与final并列修饰同一个类。
3)子类中的抽象方法不能与父类的抽象方法同名。
4)抽象类中可以包含具体的方法,当然也可以不包含抽象方法。
5)abstract 不能与private、static、final或native并列修饰同一个方法。
6)抽象类不能被实例化,实例化的工作应该交由它的子类来完成,它只需要有一个引用即可。
7)只要包含一个抽象方法的抽象类,该方法必须要定义成抽象类,不管是否还包含有其他方法。

二、接口(implements)
接口是一种比抽象类更加抽象的“类”。接口本身并不是类,不能通过new的方式来实现,只能new它的相关实现类来实现。
接口使用注意事项:
1)接口中不存在实现的方法。
2)在实现多接口的时候一定要避免方法名的重复。
3)实现接口的非抽象类必须要实现该接口的所有方法。抽象类可以不用实现。
4)个Interface的方所有法访问权限自动被声明为public。确切的说只能为public,当然你可以显示的声明为protected、private,但是编译会出错
5)接口中可以定义“成员变量”,或者说是不可变的常量,因为接口中的“成员变量”会自动变为为public static final。可以通过类命名直接访问:ImplementClass.name。
6)不能使用new操作符实例化一个接口,但可以声明一个接口变量,该变量必须引用(refer to)一个实现该接口的类的对象。可以使用 instanceof 检查一个对象是否实现了某个特定的接口。例如:if(anObject instanceof Comparable){}。

三、抽象类和接口的区别
1、对子类而言只能继承一个抽象类,但能实现多个接口。
2、抽象类中:抽象类可以拥有任意范围的成员数据,同时也可以拥有自己的非抽象方法;接口中:它仅能够有静态、不能修改的成员数据(接口中一般不会使用成员数据),同时它所有的方法都必须是抽象的。
3、抽象层次:抽象类是对整个类整体进行抽象(属性、行为),但是接口却是对类局部(行为)进行抽象。
4、跨域:抽象类跨域的是具有相似特点的类,而接口却可以跨域不同的类。
5、设计层次:抽象类必须要知道子类才能抽象出父类,而接口完全不同,并不知道相关子类,只是定义了一种实现规则。
6、抽象类和接口所反映的设计理念不同,抽象类所代表的是“is-a”的关系,而接口所代表的是“like-a”的关系。
7、抽象类中可以拥有自己的成员变量和非抽象类方法,但接口中所有的方法都是抽象的,只能存在静态的不可变的成员数据(接口中一般不会使用成员数据)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值