抽象类与接口的区别与联系

简介:   首先我们需要明确面向对象中的继承和实现这两种关系,继承(Extends)是子类与父类之间的一种联系,子类可以继承父类中的非私有方法,可以重写父类的抽象方法。

  首先我们需要明确面向对象中的继承和实现这两种关系,继承(Extends)是子类与父类之间的一种联系,子类可以继承父类中的非私有方法,可以重写父类的抽象方法。实现(Implements)是接口与实现类之间的一种关系,实现类必须实现接口中的所有方法,接口中的方法不可以声明为私有方法。

  接口与实现类之间还好理解,可能大家对于抽象类与普通父类,抽象方法与普通方法不太理解,下面就分别对抽象类与抽象方法、普通类与普通方法进行简单的对比。

  首先我们要想用继承关系的话就要涉及到父类与子类,当子类继承父类时,就涉及到了父类是普通类还是抽象类,父类方法是普通方法还是抽象方法。

  抽象方法与普通方法

  抽象方法是被关键字abstract修饰的方法,父类的抽象方法必须被子类重写。未被abstract修饰的方法就是普通方法,父类的普通方法除了私有的之外都可以被子类继承。

  抽象类与普通类

  抽象类也是被abstract修饰的类,只有类中有抽象方法,这个类就必须被定义成抽象类,抽象类必须被继承,抽象方法必须被重写,非抽象方法可以不被重写。抽象类中的抽象方法被重写的过程就是我们面向对象中的多态实现。未被abstract修饰的类就是普通类,普通类可以被继承也可以不被继承,普通类一旦被继承就成为父类,父类的非私有方法就可以被子类继承。

  抽象类与接口

  通过以上的介绍我们就能看出来,在抽象类中只有抽象方法才必须被子类重写;而在接口中,实现类必须实现接口的所有方法。换句话说,当抽象类中所有的方法都是抽象方法的时候,接口与抽象类之间就可以互相替换。但是这样说是有些片面的,在java里面只能实现多继承,也就是说一个子类只能继承于唯一一个父类;而一个实现类可以实现多个接口,java里面正是使用接口来实现多继承的。因此在有多继承的情况下即使是抽象类中的方法全是抽象方法也不能替代接口的作用。


  

目录
相关文章
|
7月前
|
Java
接口和抽象类的区别
接口和抽象类的区别
100 6
|
7月前
|
Java
抽象类和接口有什么区别?
抽象类和接口有什么区别?
|
2月前
抽象类和接口在实现多态时的区别
【10月更文挑战第19天】抽象类和接口在实现多态时都有其独特的作用。抽象类更适合用于定义一些具有共同特征和部分实现的类,而接口则更强调定义一组行为规范,以便不同的类可以实现并组合这些行为。
54 10
|
3月前
|
C# 索引
C# 一分钟浅谈:接口与抽象类的区别及使用
【9月更文挑战第2天】本文详细对比了面向对象编程中接口与抽象类的概念及区别。接口定义了行为规范,强制实现类提供具体实现;抽象类则既能定义抽象方法也能提供具体实现。文章通过具体示例介绍了如何使用接口和抽象类,并探讨了其实现方式、继承限制及实例化差异。最后总结了选择接口或抽象类应基于具体设计需求。掌握这两者有助于编写高质量的面向对象程序。
125 5
|
7月前
|
Java
抽象类和接口的区别
抽象类和接口的区别
89 0
接口和抽象类有什么区别
接口和抽象类有什么区别
60 0
抽象类和普通类的区别
抽象类和普通类的区别
150 0
C++中的抽象类和接口
C++中的抽象类和接口
90 0
抽象类、接口的区别和相似点(一)
抽象类、接口的区别和相似点(一)
145 0
抽象类、接口的区别和相似点(一)