Java:抽象类与接口

学习目标

关键是要理解抽象基类与接口特性被引入的必要性

抽象类和抽象方法

  • 有abstract修饰的类称为“抽象类”,它只定义了什么方法应该存在,不能创建对象,必须派生出一个子类,并在子类中实现其未实现的方法之后,才能使用new关键字创建对象
  • 在方法前加上abstract就形成抽象方法,只有方法声明,没有实现

抽象类的三种“类型”

  • 直接定义了一个抽象方法
  • 继承了一个抽象父类,但没有完全实现父类所包含的抽象方法
  • 实现了一个接口,但没有完全实现此接口所包容的抽象方法

从抽象类继承

  • 从抽象类继承的子类必须实现父类的所有抽象方法,否则,仍然是抽象类

使用抽象类

  • 抽象类不能创建对象,一般用它来引用子类对象
  • 实例
Person p;
p = new Employee();
  • 以下模式总是成立的:在这里插入图片描述

接口

在这里插入图片描述
在这里插入图片描述
看到这里,我发现,我还是没有从C++里走出来
在这里插入图片描述

Java接口的语法特性

  • 定义一个接口,采用关键字interface,实现一个接口,采用关键字implements
  • 接口的成员函数自动成为public的,数据成员自动成为static或final的
  • 如果接口不声明为public,则自动变成package
  • 一个类可以同时实现多个接口

接口的使用

在这里插入图片描述

接口的扩充

  • 可以通过继承接口来扩充已有接口,并形成一个新的接口
    在这里插入图片描述
  • 实现子接口的类,必须实现“父子”接口所定义的所有方法,才能被实例化(即new出一个对象)

利用接口定义常量

在这里插入图片描述

  • 只要一个类声明实现了这个接口,就可以直接使用这些常量名
  • 在实际开发中,这种编程方式非常常见
  • ⚠️定义在接口中的常量必须被初始化

接口与抽象类的区别

  • 抽象类是一个不完全类,而接口只是表明类应该具有哪些“外部”特征,不涉及任何实现细节
  • 接口基本上不具备继承的任何具体特点,它仅仅承诺了外界能够调用的方法
  • 一个类一次可以实现若干个接口,但一个类只能继承一个父类
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值