Java抽象类和接口细节区别

我们都知道,Java面向对象的封装特征之一时,常常会用到接口和抽象类,下面就来看看接口和抽象类,默认在jdk1.8环境下

   1 接口

         接口就是一个规范和抽象类比较相似。它只管做什么,不管怎么做,是提供一种统一的’协议’,而接口中的属性也属于’协议’中的成员。通俗的讲,借口就是某个事物对外提供的一些功能的声明,其定义和类比较相似,只不过是通过interface关键字来完成,接口是更高级的抽象:(注意jdk1.7中接口没有默认实现的方法,    jdk1.9接口可以用private来修饰)

      特点: 1.接口中的所有属性默认为:public static final ****; 

                  2.接口中的所有方法默认为:public abstract ****;排除默认的static方法和default方法,jdk1.8中static方法中是可以写main方法,同样可以运行

   首先看第一个,为什么接口的所有属性默认实public static final的 ?

   首先接口肯定是可以被不同包不同类来实现的,所以默认是public ,且也只能public 。

   static:一个类继承多个接口时,即使存在同名变量也不会混淆。如果每个接口都含有一个名为a的成员变量,那么在该类中可以通过接口1.a,接口2.a,接口3.a来调用a。

   final:该变量不可被修改。如果一个接口被多个类实现时,在类1中修改了该变量的值,那么其他类中该变量的值也会变化,要防止该情况的发生。

   第二点:接口中的方法默认为为public abstract ... ,是因为接口是所有的一个规范,既然是规范那就需要其实现类去实现该类,重写该抽象方法变成实现类自己的特有的行为;在jdk1.8之后,接口可以写static 方法和 defalut 方法,并且都不是抽象方法;在static中,默认缺省了访问修饰符public,并且在别的类中调用时候,只需要类名.static方法名();而default方法,是需要其实现类的实例来调用的,实现类可以选择重写或者不重写,如果不重写,表示直接用到接口里面的dafalut方法,但是由于接口可以多个实现的原因,当一个实现类同时实现了多个接口,且这些个接口里面都有同样的default()方法,那么实现类分部清楚到底调用那个接口类的该方法,所以此时必须要重写default方法

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值