Java中,一个类实现了某接口,则必须实现该接口中的所有方法么

这里要看这个类是否是非抽象的,如果是普通的类,必须去实现接口里所有的方法,如果是抽象类类,则可以不去实现,

在Java中抽象类就是使用abstract关键字修饰的一种特殊的类,抽象类可以不去实现接口的抽象方法,可以由继承这个抽象类的子类去实现。

在这里首先定义一个接口,接口里面定义一些抽象方法
public interface TestInterface {

   void show();
}
非抽象类必须实现接口里的抽象方法,否则编译报错
public class TestStr implements TestInterface{
   @Override
   public void show() {
   }
}

抽象类实现接口可以不去实现接口里抽象方法,也可以实现
public abstract class TestAbstract implements TestInterface{
   
}

可以由继承该抽象方法的子类去实现

public class TestChildClass extends TestAbstract {

@Override

public void show() {

}

}

 

“Java中,一个类实现了某接口,则必须实现该接口中的所有方法么?”这句话其实是不准确的,因为我们还没有考虑到抽象类。

抽象类实现某个接口,可以不实现所有接口的方法,可以由它的子类实现。而普通类即非抽象类则必须实现接口里的全部方法。

同样地,再来讲述一下接口:

1 接口的设计解决了java只能单继承的缺点,可以实现多个接口来实现java的多继承。
2 实现某个接口必须覆写其中的所有方法,当然也可以是一个空的实现(方法体为空没有任何作用),但是这个类必须是非抽象类,抽象类如上文。

抽象类实现接口的意义,可以选择实现某个方法,或者不去实现某个方法,减少代码冗余性

我打个比方,比如A是一个借口,里面有a,b,c,d4个抽象方法,而这时候,我们想让某些方法内容已实现,而某些方法放给调用者实现,这时候就出现了抽象类,抽象类可以选择性实现接口的方法,最直观的例子是List,不论是LinkedList,还是ArrayList,都继承了AbstractList,而AbstractList又实现了List接口,为什么要这样呢?因为ArrayList和LinkedList有些东西是一样的,没有必要重复2次,所以就有了AbstractList作为中间量!
其本质就是为了高复用性,减少代码重复度,一个高质量代码,其必然考虑,一切封装出去,相同的代码绝对不能重复出现在两个地方,否则就会产生代码冗余.
至于解耦合等代码规范,和这个问题不搭边,所以不多说

  • 13
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值