抽象类和接口

抽象类

应用场景:
某个父类只是限定其子类应该包含怎样的方法,但不需要准确知道这些子类如何实现这些方法
抽象类存在的意义:

  1. 为其子类提供一个公共类型(父类引用指向子类对象)
  2. 封装子类中的重复内容(成员变量和方法)
  3. 限制子类的设计随意性,在一定程度上避免了无意义父类的实例化

声明语法:

abstract class <类名>{
	成员变量;
	方法(){方法体};
	abstract 方法();
}

特点:

  1. 抽象类不允许被实例化,只能作为其他类的父类
  2. 当类中存在抽象方法,则必须声明为抽象类,但抽象类中可以没有抽象方法
  3. 一个类继承抽象类后,必须实现其所有抽象方法,否则也是抽象类
  4. abstract方法不能用private和static修饰,抽象类不能同时用final和abstract修饰

接口

某几个类不具有相同特征,但具有相同能力,接口可以用来规定一些行为规范

  1. 接口中抽象方法可以不写abstract关键字,修饰符默认为public
  2. 当类实现接口时,需要去实现接口中的所有抽象方法,否则需要该类设置为抽象类
  3. 接口中的常量默认为public static final修饰的,必须进行实例化
  4. 默认方法(default修饰,默认修饰符为public可缺省)、静态方法(static修饰)(都可以有方法体,可以不用实现),调用默认方法:接口名.super.method();静态方法可以通过接口名调用
  5. 向上转型:接口名 对象名称= new 实现了接口的类名();功能与抽象类类似
  6. 当一个类继承的多个接口中有同名的默认方法时,需要重写方法,当继承的父类中也有同名的方法时,则不用进行重写。
  7. 在接口中,子接口可继承多个父接口
  8. 接口在单继承时,可继承父接口的常量,抽象方法,默认方法,不可继承静态方法;在多继承时只继承抽象方法,常量和默认方法无法确定使用哪个,在继承类中也有相同常量名时也无法分辨。

比较:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值