《Java面向对象》"花为诗"(三)抽象类、接口及类与类的关系

本文详细介绍了Java中的抽象类和接口的概念与使用,包括抽象方法、抽象类的特性,以及类与类之间的继承、实现、依赖和关联关系。抽象类用于封装共同特征和行为,不能实例化;接口则提供了多继承的实现,强调抽象行为。此外,文章还讨论了抽象类和接口在实际编程中的意义和作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、抽象类

由于继承这个显著特点,我们可以将子类设计的更加具体,而父类更加一般化,通用化。父类可以封装不同子类的共同特征或者共同行为.而有的时候,父类中封装的方法无法具体完成子类中需要的逻辑,因此我们可以将此方法设计成抽象方法,即使用关键字abstract进行修饰。而有抽象方法的类,也必须使用abstract关键字进行修饰,因此我们称之为抽象类

1、抽象方法与抽象类

  • 由abstract修饰的方法为抽象方法,抽象方法只有方法名的定义,没有方法体的实现,需要使用分号结尾
  • 若类中包含抽象方法,那么该类必须使用关键字abstract声明成抽象类

2、抽象类不可以实例化

  • 抽象类不可以实例化,因为没有具体意义
  • 抽象类中可以提供构造方法
  • 抽象类中也可以没有抽象方法
  • abstract和final不可以同时修饰一个类

3、继承抽象类

  • 若一个类继承了抽象类,那么必须重写其抽象方法,不同的子类可以有不同的实现。
  • 若继承抽象类的类也声明成抽象类,可以不用重写其抽象方法

4、抽象类的意义

  • 为其子类提供一个公共的类型
  • 封装子类中重复的内容,如成员变量和方法
  • 定义抽象方法,子类虽然有不同的实现逻辑,但该方法的定义却是一致的。

二、接口

有的时候,我们需要从几个不相关的类中派生出一个子类,继承他们的所有成员变量和方法,但是java不支持多继承。此时,我们可以使用接口,来达到多继承的效果

1、接口的定义

  • 使用interface进行定义 
  • 接口中只能有抽象方法和常量,

2、特点

  • 提供的成员变量前,默认提供public static final进行修饰
  • 提供的方法,默认使用public abtract进行修饰
  • 接口不能实例化,没有任何意义
  • 接口中不能存在构造器

3、实现接口

  • 与继承不同,一个类可以实现多个接口。接口间使用逗号分开。
  • 使用关键字implements进行实现,必须实现接口中的所有抽象方法
  • 若一个类中没有全部实现接口中的抽象方法,那么该类需要使用abstract声明成抽象类

4、接口间的继承

  • 接口之间可以存在继承关系,即一个接口通过关键字extends可以继承另一个接口。
  • 子接口继承了父接口中的所有抽象方法

三、类与类之间的关系

类与类之间的关系,主要有以下四种关系

  • 继承
  • 实现
  • 依赖
  • 关联

1、继承

  • 继承指一个类继承另一个类,或者一个接口继承另外一种接口。使用关键字extends。这样可以继承功能,也可以添加新的功能。
  • 在UML类图设计中,继承用一条带空心三角箭头的实线表示,从子类指向父类,或者子接口指向父接口

2、实现

  • 实现是一个类使用关键字implements实现接口中的所有抽象方法,这种关系比较常见。
  • 在UML类图设计中,实现用一条带空心三角箭头的虚线表示,从类指向实现的接口

3、依赖

  • 依赖就是一个类A中的方法的参数使用到了另外一种类B。这种关系具有偶然性,临时性,关系弱。但是类B的变化会影响到A。
  • 在UML类图设计中,依赖关系用由类A指向类B的带箭头虚线表示

4、关联

  • 关联体现的是两个类之间的语义级别的一种强依赖关系,比如我和我的朋友,这种关系比依赖更强,不存在关系的偶然性和临时性,一般都是长期的,而且双方的关系都是平等的。
  • 关联可以单向,也可以双向。代码表现在被关联B以成员变量的方式出现在类A中
  • 在UML类图设计中,关联关系用由关联类A指向被关联类B的带箭头实线表示,在关联的两端可以标注关联双方的角色和多重性标记
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值