本节内容视频链接:面向对象09:什么是继承_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV12J41137hu?p=68&vd_source=b5775c3a4ea16a5306db9c7c1c1486b5 Java中的继承是面向对象编程的一个核心概念,它允许新的类(子类)继承现有类(父类)的属性和方法。
继承是类和类之间的一种关系,除此之外类和类之间的关系还有依赖、组合、聚合等。
通过继承,子类可以直接访问父类的非私有属性和方法,实现代码重用和扩展。
Java只支持单继承,即一个子类只能继承一个父类。
子类和父类之间,从意义上讲应该有“is a” 的关系。
1.继承的特点包括:
- 子类可以继承父类的public和protected属性和方法,但不能继承private属性和方法;
- 子类可以重写父类的方法,实现自己的逻辑;
- 子类可以新增属性和方法。
2.Java中继承是如何实现的:
- 在Java中,实现继承是通过使用extends关键字来完成的。
- 子类通过extends关键字继承父类,从而能够获取父类的所有非私有成员(属性和方法)。
- 这种机制允许子类复用父类的代码,同时还可以在子类中添加新的成员或者重写父类的方法来提供更具体的实现。
- Java中的继承是单继承,意味着一个类只能继承一个直接父类,但可以通过实现多个接口来间接实现多继承的效果。
- 继承提高了代码的复用性和可维护性,是面向对象编程的一个重要特性。
3.Java中继承有哪些特点
- 子类继承父类的特征和行为:这使得子类具有父类的各种属性和方法,同时子类还可以添加自己特有的属性和方法,或者重写父类的方法来提供不同的实现。
- 继承关系中的is-a原则:子类被视为父类的一种,即它们之间存在“是一种(is-a)”的关系。
- 使用extends关键字实现继承:在Java中,通过extends关键字来表示一个类继承了另一个类。
- 私有属性不可直接访问:父类中的私有属性在子类中是不可直接访问的,但可以通过父类提供的公共setter/getter方法来修改和访问。
- 不支持多重继承:Java中的类只能直接继承自一个父类,但可以通过实现多个接口来间接实现多重继承的效果。
5.Java中继承的优缺点
优点:
- 提高代码复用性:子类可以继承父类的属性和方法,避免重复编写代码。
- 提高代码维护性:通过继承,可以更容易地维护和扩展代码,因为新增或修改功能只需在相应类中进行。
- 实现多态性:继承是多态存在的前提,允许使用父类类型的引用指向子类对象,提高代码的灵活性和可扩展性。
缺点:
- 增强类的耦合性:子类和父类之间有较强的关联性,父类的变化可能导致子类也需要修改,增加了维护的难度。
- 可能导致复杂性增加:如果继承层次过深,可能导致代码结构复杂,难以理解和维护
6.如何降低继承中的耦合性
降低继承中的耦合性是一个重要的软件设计目标,它有助于提高代码的可读性、可维护性和重用性。以下是一些关键策略:
- 使用组合代替继承:组合关系允许将一个类的功能分离成多个不同的类,并在需要时灵活地组合这些类。这种方式创建了类之间的松散耦合,使得一个类的变化不太可能影响到其他类12。
- 使用接口:接口定义了一组方法的签名,具体实现由其他类来完成。通过使用接口,可以将父类与子类之间的依赖关系降至最低,从而提高代码的可读性和可维护性13。
- 将子类的共性抽象成父类:如果多个子类具有相同的属性和方法,可以将这些共性抽象成一个父类,从而减少子类和父类之间的耦合性
7.Java中的object类
Java中的Object类是所有类的父类,位于继承树的最顶层。
每个Java类都直接或间接地继承自Object类,即使一个类没有显式地继承任何其他类,Java也会隐式地使其继承自Object类。这使得Object类的实例方法可以被所有Java对象使用,在Java编程中起着至关重要的作用。
Object类提供了多个方法,用于处理对象的基本操作,如比较、克隆、转换为字符串等。其中一些重要的方法包括:
public final native Class<?> getClass()
:返回该对象的运行时类的java.lang.Class
对象。public boolean equals(Object obj)
:用于比较两个对象是否相等。public String toString()
:返回对象的字符串表示。
这些方法为Java中的所有对象提供了通用的功能。