java关键字之abstract

abstract:
修饰符号,声明抽象方法和抽象类。声明方法时表示该方法只有特征签名,没有具体实现。而是把具体实现留给继承该类的子类,并且抽象类不能直接用new来实例化对象即使有公共的构造函数。
1,abstract修饰类,会使这个类成为一个抽象类,这个类将不能生成对象实例,但可以做为对象变量声明的类型,也就是编译时类型,抽象类就像当于一类的半成品,需要子类继承并覆盖其中的抽象方法。

2,abstract修饰方法,会使这个方法变成抽象方法,也就是只有声明(定义)而没有实现,实现部分以";"代替。需要子类继承实现(覆盖)。

 

abstract和interface:
基本用法:
abstract可以有自己的数据成员,也可以有非abstract的成员方法。
interface只能有static final的数据成员(一般不定义数据成员),不允许有非abstract成员方法。
高级用法:
abstract class是一个类,抽象的而已,不能被实例化,用于子类继承,表示“is-a”的关系。关键字extends,java中只能是单继承。子类继承时,可以不全部覆盖父类的abstract方法,这是子类任然是一个abstract class。
interface是接口,没有类的概念,是一份“大家”都遵守的契约,用于实现接口,表示“like-a”的关系。关键字implements,可以实现多个接口。实现接口时,必须覆盖接口的所有方法。

例子:(门和报警门)

抽象类 门
abstract class Door {
 
  abstract void open ();

  abstract void close ();
}(并不是所有的门都有“报警”功能,但是所有的门都有“开”和“关”的功能)

接口 报警功能
interface Alarm {
  void alarm();
}

有报警功能的门
class AlarmDoor extends Door implements Alarm {
   void open() {...}
   void close() {...}
   void alarm() {...}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值