Java中的面向对象编程 (OOP) 概念
顾名思义,面向对象编程或 OOP 是指在编程中使用对象的语言。面向对象编程旨在在编程中实现继承、隐藏、多态等现实世界的实体。 OOP 的主要目的是将数据和对它们进行操作的函数绑定在一起,这样代码的其他部分就不能访问这些数据,除了那个函数。
让我们通过完善方法声明和传递的概念来讨论先决条件。从方法声明开始,它由六个组件组成:
- 访问修饰符:定义方法的访问类型,即在您的应用程序中可以从哪里访问它。在Java中,有 4 种访问说明符。
- public:可在您的应用程序的所有类中访问。
- protected:在定义它的包及其子类中可访问(包括在包外声明的子类)
- private:只能在定义它的类中访问。
- 默认值(在不使用任何修饰符的情况下声明/定义):可在定义其类的同一类和包中访问。
- 返回类型:方法返回的值的数据类型,如果不返回值则为 void。
- 方法名称:字段名称的规则也适用于方法名称,但约定略有不同。
- 参数列表:定义的输入参数的逗号分隔列表,前面带有它们的数据类型,在括起来的括号内。如果没有参数,则必须使用空括号 ()。
- 异常列表:您期望该方法可以抛出的异常,您可以指定这些异常。
- 方法体:用大括号括起来。执行预期操作所需执行的代码。
消息传递:对象通过相互发送和接收信息来相互通信。对象的消息是执行过程的请求,因此将调用接收对象中生成所需结果的函数。消息传递涉及指定对象的名称、函数的名称和要发送的信息。
现在,逐步学习 OOPS 的 4 个支柱的基本前提如下。让我们从了解面向对象编程语言的不同特征开始
OOPs 的概念如下:
- 班级
- 目的
- 方法和方法传递
- OOPS 的支柱
- 抽象
- 封装
- 遗产
- 多态性
- 编译时多态性
- 运行时多态性
类是用户定义的蓝图或原型,从中创建对象。它表示一种类型的所有对象共有的一组属性或方法。一般来说,类声明可以包括这些组件,按顺序:
- 修饰符:类可以是公共的或具有默认访问权限(有关详细信息,请参阅此)。
- 类名:名称应以首字母开头(按约定大写)。
- 超类(如果有):类的父类(超类)的名称,如果有的话,前面有关键字extends。一个类只能扩展(子类)一个父类。
- 接口(如果有):由类实现的接口的逗号分隔列表,如果有的话,前面有关键字 implements。一个类可以实现多个接口。
- Body:用大括号 { } 包围的类主体。
目的 是面向对象编程的基本单元,代表现实生活中的实体。一个典型的Java程序会创建许多对象,如您所知,这些对象通过调用方法进行交互。一个对象包括:
- 状态:它由对象的属性表示。它还反映了对象的属性。
- 行为:它由对象的方法表示。它还反映了一个对象对其他对象的响应。
- 身份:它为一个对象赋予一个唯一的名称,并使一个对象能够与其他对象交互。
- 方法:方法是执行某些特定任务并将结果返回给调用者的语句的集合。方法可以执行某些特定任务而不返回任何内容。方法允许我们在不重新键入代码的情况下重用代码。在Java中,每个方法都必须是某个类的一部分,这与 C、C++ 和Python等语言不同。
方法可以节省时间并帮助我们重用代码而无需重新输入代码。
现在让我们讨论 OOPS 的 4 个支柱:
支柱 1:抽象
数据抽象是仅向用户显示基本细节的属性。不向用户显示琐碎或非基本单元。例如:汽车被视为一辆汽车,而不是它的单个组件。
数据抽象也可以定义为仅识别对象所需特征而忽略不相关细节的过程。对象的属性和行为将其与其他类似类型的对象区分开来,并且还有助于对对象进行分类/分组。
考虑一个男人开车的真实例子。该人只知道踩油门会增加汽车的速度或踩刹车会使汽车停下来,但他不知道踩油门时速度实际上是如何增加的,他不知道汽车的内部机构或加速器、刹车等在车内的实施。这就是抽象。
在Java中,抽象是通过接口和抽象类来实现的。我们可以使用接口实现 100% 的抽象。
支柱 2:封装
它被定义为将数据包装在一个单元下。它是将代码和它操作的数据绑定在一起的机制。考虑封装的另一种方式是,它是一个保护屏障,可防止数据被该屏蔽之外的代码访问。
- 从技术上讲,在封装中,一个类的变量或数据对任何其他类都是隐藏的,只能通过声明它们的类的任何成员函数来访问。
- 与封装一样,一个类中的数据对其他类是隐藏的,因此也称为数据隐藏。
- 封装可以通过将类中的所有变量声明为私有并在类中编写公共方法来设置和获取变量的值来实现。
支柱 3:继承
继承是OOP(面向对象编程)的重要支柱。它是Java中允许一个类继承另一个类的特性(字段和方法)的机制。
让我们讨论一些常用的重要术语:
- 超类:其特征被继承的类称为超类(或基类或父类)。
- 子类:继承另一个类的类称为子类(或派生类、扩展类或子类)。除了超类的字段和方法外,子类还可以添加自己的字段和方法。
- 可重用性:继承支持“可重用性”的概念,即当我们想要创建一个新类并且已经有一个类包含我们想要的一些代码时,我们可以从现有类中派生出我们的新类。通过这样做,我们正在重用现有类的字段和方法。
支柱 4:多态性
它指的是面向对象编程语言有效区分同名实体的能力。这是由Java在这些实体的签名和声明的帮助下完成的。
Note: Polymorphism in Java are mainly of 2 types:
- Overloading
- Overriding
例子
Java
// Java program to Demonstrate Polymorphism
// This class will contain
// 3 methods with same name,
// yet the program will
// compile & run successfully
public class Sum {
// Overloaded sum().
// This sum takes two int parameters
public int sum(int x, int y)
{
return (x + y);
}
// Overloaded sum().
// This sum takes three int parameters
public int sum(int x, int y, int z)
{
return (x + y + z);
}
// Overloaded sum().
// This sum takes two double parameters
public double sum(double x, double y)
{
return (x + y);
}
// Driver code
public static void main(String args[])
{
Sum s = new Sum();
System.out.println(s.sum(10, 20));
System.out.println(s.sum(10, 20, 30));
System.out.println(s.sum(10.5, 20.5));
}
}
30
60
31.0