006抽象类和接口(java基础)

目录

1、抽象类

2、接口

3、接口和抽象类的区别


1、抽象类

简言之,就是用abstract修饰的类

抽象类规定:

  • 抽象类必须用public或procted 修饰(如果为private修饰,那么子类则无法继承,也就无法实现其抽象方法)。默认缺省为 public。
  • 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

  • 抽象类中可以包含非抽象方法,但是有抽象方法的类必定是抽象类。

  • 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

  • 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

  • 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

  • 抽象类可以有构造方法,但是不能用来直接实例化抽象类,实例化子类的时候,就会初始化父类,不管父类是不是抽象类都会调用父类的构造方法,初始化一个类,先初始化父类

总之,抽象类不能用private修饰,默认是public的,不能被实例化,子类必须实现抽象类的所有方法,要不子类也得被定义成抽象类,抽象类可以包含非抽象方法,也可以有构造方法

2、接口

接口(interface)是抽象方法和常量值的定义的集合

从本质上讲,接口是一种特殊的抽象类,这种抽象类中只包含常量和方法的定义,而没有变量和方法的实现

3、接口和抽象类的区别

(1)一个类可以实现多个接口,但只能继承一个抽象类

(2)抽象类中可以有非抽象方法,但接口中只能有抽象方法

(3)抽象类中的成员变量可以是任意类型的,而接口中的成员变量只能是public static final

(4)抽象类可以有构造方法,接口不能

(5)抽象类中可以有static方法和代码块,接口中不能

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值