抽象类与接口的区别&抽象类中构造方法的作用(super关键词调用父类构造方法的作用)

抽象类特点

  1. 抽象类中可以有普通成员方法, 抽象类中的成员方法的权限修饰符可以是任意;
    抽象类中可以有main方法,但是一般不会这么做;
  2. 抽象类中可以有抽象方法, 抽象类中的抽象方法的权限修饰符不能为private;
  3. 抽象类中可以没有抽象方法;
  4. 抽象类中可以有构造方法, 抽象类中的构造方法的权限修饰符可以是任意;
  5. 抽象类中可以有变量, 也可以有常量;
  6. 普通类中有的, 抽象类中都可以有,包括静态方法,静态变量,静态代码块,构造代码块等;
    唯一不同的就是抽象类中可以定义抽象方法, 并且抽象方法权限修饰符不能为private;
    抽象类不能被实例化,因为实例化才能调用方法,但是抽象方法没有方法体,调用无意义;

abstract关键字不能和哪些关键字共存

  1. abstract 不能和 private 共存,冲突。
    抽象方法需要被实现,加了 private 的方法不能被继承,更不能被实现。
  2. abstract 不能和 static 共存,我无意义。
    static 修饰的方法能通过类名调用,通过类名调用抽象方法无意义。
  3. abstract 不能和 final 共存,冲突。
    抽象类需要有子类,加了 final 的类不能被继承。
    抽象方法需要被实现,加了 final 的方法不能被实现。

接口特点(JDK8以前)

  1. 接口中的所有方法默认是 “public abstract” 修饰的, 不能更改;

  2. 接口中的所有变量默认是 “public static final” 修饰的, 不能更改;
    在java中,我们经常将常用的常量定义在接口中以便使用;例如在接口中定义常用的http响应码;访问方式:“接口名.常量名”

  3. 接口中不能有任何代码块;

类和接口的继承与实现规则

  1. 具体类能继承具体类;只能单继承;
  2. 具体类能继承抽象类;只能单继承; 具体类必须实现抽象类中所有的抽象方法;
  3. 抽象类能继承具体类(所有的类都继承子Object,包括抽象类,Object是一个具体类);只能单继承;
  4. 抽象类能实现接口;可以多实现;不必实现接口中的抽象方法;
  5. 具体类能实现接口;可以多实现;必须实现接口中所有的抽象方法;
  6. 接口能继承接口;可以多继承;
  • 如果具体类实现了接口a,接口a继承了接口b,那么具体类必须实现接口a和接口b中所有的抽象方法。

抽象类中构造方法的作用(super关键词调用父类构造方法的作用)

  • 这里说的不只是抽象类中构造方法的作用,
    而是 “super关键词调用父类构造方法的作用”。

在这里插入图片描述

  • 注意: 父类的构造器中,也会默认调用爷爷类的构造方法( super(); )…
    最终会调用Object类的无参构造。 Object类中没有成员变量,因此不会有Object类的变量被继承下来。
  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值