JAVA零基础小白自学日志——第二十二天


今日提要:接口的静态方法和默认方法,接口与抽象类的区别

1.接口的方法

首先我们需要明确的是接口是一个抽象方法集,那就会有人问,为啥里面还有默认方法和静态方法,这两种拥有方法体的方法存在,当然这种规则是JDK1.8以后出现的,之前接口只是一个单纯的抽象方法集,那咱们就来说说这两个JDK1.8以后加入接口的方法有什么用处;

[1].先来说说接口的默认方法

  • 我们来想象一种情况,如果一段代码经过一段时间的使用,某个通过校验并运行稳定,并被很多具体类调用的接口需要添加新的功能,我们要怎么办,当然你可以说,我们把新的方法抽象了放进这个接口就好了,那你想过没有,原来的代码是运行稳定的,你放入一个新的抽象方法在接口内,那么所有调用这个接口的具体类,都需要重新覆写这个抽象方法,如果不覆写的话,编译就无法通过,如果代码规模不大,并且你拥有修改这段代码的权限,那么也不是不可以;
  • 但是如果代码的规模比较大,或者你根本没有修改全部代码的权限,那么明显只在接口里面加入一个抽象方法是行不通的,这个时候,JDK1.8提出的接口里的默认方法就可以帮你解决这个问题了;
  • 简单的来说接口里的默认方法就是用于接口升级更新维护使用的
  • 由于默认方法有方法体,所以并不会硬性的要求具体类实例化它,但是可以按需调用或者覆写这个方法,那么原先代码里运行稳定的类,除了必须进行修改的外,别的类可以不用进行更新,这对代码的灵活性和维护起到了极大的帮助;
  • 这里需要注意的是:接口的默认方法与抽象类方法名一样的时候,接口的默认方法优先级低,将被忽略,多个接口内有同样的方法名的方法,并且其中至少有一个为默认方法的时候,这个方法必须被具体类覆写;

[2].接口的静态方法

  • 首先需要明确的是静态方法是一个类方法,同样的它也无需被具体类实例化,它的调用是通过接口名.方法名();来调用的,它的功能很简单,就是提供一个接口函数来满足调用接口的具体类共享数据(多数共享)或者特例调用(特殊需求)
  • 这个应该很好理解,要不就是有个数据大家都要用,大家共享起来比较方便,要不就是这个数据只有极少数具体类需要用,特殊给它提供的,没有什么不好理解的地方,其实和普通类里面的静态方法并没有什么太大的不同;

2.接口与抽象类的区别

项目抽象类接口
构建基础基于IS-A(是一个)建立的,比如:猫是一个哺乳动物,微波炉是一个家用电器基于HAS-A(有一个)建立的,猫有一个捕鼠的能力,狗有一个看护保卫的能力
构造函数有构造函数没有构造函数
抽象方法抽象类里不一定有抽象方法,含有抽象方法的类一定是抽象类,抽象方法不可以被private、fianl、static修饰接口里面的类除了默认和静态(static修饰)方法外,均默认为抽象方法
作用抽象类是子类的模板,它存在的意义就是被子类继承接口提供的是附加功能,可以被多个继承树调用

今天说的东西都比较简单,要去努力肯两天书了,现在很多概念不太好理解,还是需要理解了,才能写出来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值