抽象类(abstract)和接口(Interface)的区别与联系

目录

一、什么是抽象类?

二、接口——是一个特殊的抽象类

三、抽象类和接口的区别与联系


一、什么是抽象类?

  1. 只有方法签名(方法名+参数),没有方法体的方法
  2. 抽象方法一般存在于抽象类中
    1. 有抽象方法的一定是抽象类
    2. 抽象类里不一定有抽象方法
  3. 抽象类可以有抽象方法,只需要声明,无需实现;抽象方法不能声明为静态的,不能被static、final修饰,所以抽象类不能实例化对象(也就是直接New对象);但是可以new后加“{ };”,然后在里面重写,会自动生成一个代理对象,如下所示:
  4. 抽象类需要被继承,是单继承
    1. 子类需要重写超类中的抽象方法
    2. 如果子类也是抽象类,那么可以不用重写
  5. 抽象类:抽取相同的行为和属性——向上造型

抽象类设计规则:

抽取派生类的共同属性和行为,如果子类的行为不是有一致的就写成抽象方法

二、接口——是一个特殊的抽象类

1、用Interface修饰,只有抽象方法和常量的引用数组类型

2、接口可以被多实现,implements用“,”逗号隔开。例如:Interface3 implements Interface0,Interface1,Interface2

3、接口不能被实列化(接口也不能直接New对象,和抽象类一样)

4、接口中只能有抽象方法,没有构造方法

5、接口里面只能有常量,并且不能私有化,默认是public static final型,且必须初始化,实现类中不能重新定义和修改值

6、接口可以被接口继承 ,可以是多继承。例如:Interface3 Extends Interface0,Interface1,Interface2

注意:先继承再实现

接口设计规则:

  1. 抽取派生类的共同属性和行为抽到超类中,
  2. 抽象类:如果子类方法都一样设计为普通方法,如果子类的行为不是有一致的就写成抽象方法
  3. 接口:抽取部分子类相同行为,抽取到接口中——多继承,多实现,接口是对单继承的扩展

三、抽象类和接口的区别与联系

1.抽象类和接口都不能被实例化;

2.抽象类使用abstract修饰,接口用Interface修饰;

3.抽象类是单继承,一个类只能使用一次继承关系,继承用关键字extends;

   接口可以多继承(extends)多实现(interface),多实现的时候用逗号(,)隔开;

4.抽象类里面可以变量,变量可以私有化;

   接口里只有常量,默认是public static final,不能被私有化,只能是公开的(public);

5.抽象类可以有抽象方法,只需要声明,无需实现;抽象方法不能声明为静态的,不能被static、final修饰;

   接口里的方法都是抽象方法,但是都只是声明,并没有方法体,而且没有构造方法;

6.抽象类里面可以包含抽象方法和非抽象方法,抽象方法没有方法体,但是普通方法里面有方法体;有抽象方法的一定是抽象类,抽象类里不一定有抽象方法;一个类继承了抽象类,如果这个类实现了抽象类里面的所有抽象方法,那么该类可以不是抽象类,但是如果没有实现所有的抽象方法,那该类是抽象类

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值