java中抽象类和接口的区别

说道他们的区别,首先让我们先了解一下什么是接口,什么是抽象类。

1.接口:

是抽象方法的集合,接口通常以interface来声明。

public interface Demo{
   public void method();
}

2.抽象类:

使用了关键字abstract修饰的类,就是抽象类。

public abstract class Demo{
   public abstract void method();
}

然后再让我们来看看他们的区别:

3相同点:

a.他们都不能被直接实例化,都必须通过继承实现其抽象方法。

b.都是面向抽象编程的技术基础,实现了诸多的设计模式。

4.不同点:

a.类是单继承,多实现(接口);接口是多继承。

(1)类的单继承

public class Son extends Father{


}
(2)类的多实现

public class Son implements Father,Mother,..{


}
(3)接口的多继承
public interface Son extends Father,Mother,..{


}

b.抽象类中可以有抽象方法,也可以没有抽象方法。所以类中如果有抽象方法,就得是抽象类;是抽象类,但不一定有抽象方法。

而接口中所有的方法都是默认为抽象方法的。

c.抽象类中包括成员变量和非abstract的成员方法,而接口中只存在默认的public static final 的成员变量(在interface中一般不定义成员变量)和默认的public abstract的成员方法。

d.接口中没有构造方法,而抽象类中有构造方法(提供给子类的)。

e.接口如果被类实现了,必须重写里面所有的方法;如果是被抽象类实现了,就没必要重写所有方法。

 抽象类如果被继承,一定要重写里面所有被abstract关键字修饰的方法。



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值