java抽象类(abstract class)与接口(interface)的区别

在面向对象编程中, 抽象是其的一大特征之一. 在java中,通过抽象类和接口来体现OOP的抽象, 要提高程序的复用率, 增加程序的维护性和扩展性, 就必须是面向抽象的编程, 面向接口的编程. 正确的使用接口和抽象类就变得非常重要. 这两者有很多相似的地方,也有很多的不同. 让我们一起了解一下吧~

本文将先介绍抽象类和接口, 再谈及其区别

如果有错误欢迎指正.

抽象类 : 

首先来了解一下抽象方法, 它是一种特殊的方法, 只有声明没有具体实现. 抽象方法的声明格式为: 

abstract void fun();

抽象方法必须用abstract关键字进行修饰, 如果一个类含有抽象方法, 那么就称这个类为抽象类, 抽象类必须再类前用abstract关键字修饰. 因为抽象类中含有无具体实现的方法, 所以不能用抽象类创建对象. 

abstract class Test{
    abstract void fun();
}

抽象类就是为了继承而存在的, 如果你创建了一个抽象类却不去继承它, 那么就是白白创建了这个抽象类

包含抽象方法的类就是抽象类, 但不是抽象类中只能有抽象方法, 也可以有成员变量和普通的成员方法. 

抽象类和普通类的区别:

  1. 抽象方法必须为public或是protected, 如果是private就无法被子类继承, 缺省状态下就默认为public
  2. 抽象类不能用来创建对象
  3. 如果一个类继承与一个抽象类, 那么它的子类必须要实现父类的抽象方法, 如果子类没有继承父类的抽象方法, 那么子类必须定义为abstract类

接口 : 

接口是指被别人调用的方法或者函数, 形式如下: 

interface InterfaceName{
}

接口中可以含有变量和方法. 但是接口的变量会被隐式的指定为public static final变量, 并且只能是public static final变量. (一般不在接口中定义变量) 而方法会被隐式的指定为public abstract方法, 并且只能是public abstract方法, 并且接口中所有的方法不能有具体的实现, 就是说, 接口中所有的方法都必须是抽象方法.

实现接口的关键字是implements 

抽象类和接口的区别 : 

  1. 一个类可以继承一个抽象类, 但是可以实现多个接口
  2. 抽象类中的成员变量可以有很多类型,而接口只能是public static final
  3. 抽象类可以定义普通属性和静态常量属性, 而接口只能定义静态常量属性public static final
  4. 抽象类可以提供成员方法的实现细节, 而接口只能存在public abstract方法

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值