java面向对象特性,抽象,封装,继承,多态

1. 抽象(Abstraction)

  • 定义: 抽象是指将复杂的事物进行简化,通过隐藏实现细节,只暴露接口或核心功能。它是面向对象编程中的一种机制,允许我们定义“抽象类”和“接口”,从而强制子类实现某些方法。
  • 作用
    • 提供统一的规范:通过接口定义一组需要实现的方法,确保所有实现该接口的类都遵循相同的行为规范。
    • 强制约束:通过抽象类,父类可以声明未实现的方法(即abstract方法),强制子类完成其实现。
    • 简化设计:隐藏复杂的实现细节,只展示用户需要的部分。
  • 优点
    • 提高扩展性:新增功能时只需添加新接口或抽象类即可。
    • 隔离变化:通过抽象可以将系统分为多个独立模块,降低耦合度。

2. 封装(Encapsulation)

  • 定义: 封装是指将数据和操作数据的方法结合在一起,形成一个独立的单元(类)。同时,通过访问修饰符控制外界对内部数据的访问权限,确保数据的安全性和一致性。
  • 作用
    • 数据安全:通过私有属性和公有方法,防止外部代码直接修改对象的状态。
    • 提高模块性:将数据和操作封装在一起,便于管理和维护。
    • 隐藏实现细节:外界不需要了解内部具体如何实现,只需调用公共接口即可。
  • 优点
    • 易维护性:封装后的类可以独立开发和测试。
    • 软件复用:封装良好的模块更容易在不同项目中复用。

3. 继承(Inheritance)

  • 定义: 继承是指一个类(子类)继承另一个类(父类)的属性和方法,从而减少代码重复。子类可以继承父类的所有非私有成员,并在此基础上添加新的功能。
  • 作用
    • 代码复用:通过继承避免重复编写相同的功能。
    • 类的层次化:通过继承建立类之间的关系(例如“动物”与“狗”的父子关系)。
  • 优点
    • 提高开发效率:减少重复代码。
    • 建立分类体系:通过继承形成层级化的类结构,便于管理和扩展。
  • 注意点
    • Java中只支持单继承(一个子类只能有一个父类),但接口可以多实现。
    • 继承可能导致“深拷贝”问题,需要谨慎设计继承关系。

4. 多态(Polymorphism)

  • 定义: 多态是指同一个方法调用可以根据对象的实际类型呈现出不同的行为。它是面向对象编程的核心特性之一,通过多态性实现代码的灵活性和扩展性。
  • 作用
    • 方法重载(Compile-Time Polymorphism):在编译时确定调用的方法。
    • 方法覆盖(Runtime Polymorphism):在运行时根据对象的实际类型决定调用哪个方法。
  • 优点
    • 提高灵活性:同一个接口可以对应多种实现。
    • 增强可扩展性:新增功能时只需添加新的子类,而不必修改现有代码。

以下是特性总结:

特性

描述

作用/优点

抽象(Abstraction)

通过接口或抽象类定义规范,隐藏实现细节。

提供统一的规范、强制子类实现方法、简化设计

封装(Encapsulation)

将数据和方法结合,通过访问修饰符控制数据访问。

数据安全、提高模块性、隐藏实现细节

继承(Inheritance)

子类继承父类的属性和方法,减少重复代码。

代码复用、建立类的层次化结构

多态(Polymorphism)

方法调用根据对象的实际类型呈现不同行为。

提高灵活性、增强可扩展性

  • 抽象:定义接口或抽象类,提供统一规范。
  • 封装:将数据和方法结合,通过访问修饰符控制数据安全。
  • 继承:复用父类功能,建立层级化的类结构。
  • 多态:同一个方法调用呈现多种行为,提高灵活性。

相关文章

Java 反射 和 Java new 的效率有什么区别,亲测相差100倍

在我们的日常使用中,Java new是用的最多的,但是有些框架往往会使用Java反射来实现灵活性,那么它们之间的效率有什么区别呢?你有没有想过,什么时候应该该用new来创建对象,什么时候该使用反射呢?...

JAVA进阶知识学习-day01 Object类&Date类&System类

一、Object类1.1 java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。 如果一个类没有...

一文搞懂JAVA 中的引用

介绍JAVA 中有 4 种类型的引用:-强引用-软引用-弱引用-虚引用这些引用仅在垃圾收集器管理它们的方式上有所不同。如果您从未听说过它们,则意味着您只使用过强的。了解其中的区别会对您有所帮助,尤其是...

java反射的核心原理和使用

一、Java 反射的核心概念反射的本质是通过 Class 对象与 JVM 的交互,获取和操作类的字节码数据(如方法、字段等)。以下是反射的核心概念:1.Class 对象:每个 Java 类在 JVM...

Java 反射

Java的反射功能,可以帮我们在程序“运行期间““自由的”创建对象,那为什么强调运行期间呢?那是因为我们创建对象一般是在编译期间就创建好了,例如:我们在代码中new了一个对象,这个时候java源码文件...