Java 面向对象编程概念
面向对象编程是一种编程概念,其工作原理是对象是程序中最重要的部分。它允许用户创建他们想要的对象,然后创建处理这些对象的方法。操作这些对象以获得结果是面向对象编程的目标。
面向对象编程通常称为 OOP(Object Oriented Programming),用于 Java 等现代编程语言。
面向对象编程核心概念
-
类 类是一组类似的实体。它只是一个逻辑组件,而不是物理实体。例如,如果你有一个名为
auto
的类,它可能是梅赛德斯、宝马、丰田等实例。它的属性(数据)可以是这些汽车的价格或速度,也可以使用这些车辆进行驾驶、倒车、制动等方法。 -
对象 对象可以定义为类的实例,并且程序中可以有多个类的实例。对象包含数据和函数,它们对数据进行操作。例如 - 椅子、自行车、笔、桌子、汽车等。
-
继承 继承是一种面向对象编程概念,其中一个对象获取父对象的属性和行为。它在两个类之间创建父子关系。它为组织和构建任何软件提供了强大而自然的机制。
-
多态性 多态性是指变量、对象或函数采用多种形式的能力。例如,在英语中,动词
run
具有不同的含义,如果你将它用于笔记本电脑,足球竞赛和业务。在这里,我们理解run
的含义基于其他词语与它一起使用。这同样也适用于多态性。 -
抽象 抽象是表示基本特征而不包括背景细节的行为。这是一种创建适合特定应用程序的新数据类型的技术。例如,在驾驶汽车时,你不必关心其内部工作。在这里你只需要关注方向盘、齿轮、加速器等零件。
-
封装 封装是一种包装数据和代码的面向对象编程技术。在这个面向对象编程概念中,类的变量总是对其他类隐藏。它只能使用当前类的方法访问。例如 - 在学校里,没有类,学生就不可能存在。
-
关联 关联是两个对象之间的关系。它定义了对象之间的多样性。在这个 OOP 概念中,所有对象都有其独立的生命周期,并且没有所有者。例如,许多学生可以与一位教师联系,而一名学生也可以与多位教师联系。
-
聚合 在这种技术中,所有对象都有其独立的生命周期。但是,所有权使得子对象不能属于另一个父对象。例如,想一下类/对象部门和教师。在这里,单个教师不能属于多个部门,但即使我们删除了部门,教师对象也永远不会被销毁。
-
组合 组合是聚合的一种特殊形式。它也被称为死亡关系。子对象没有生命周期,因此当父对象删除时,所有子对象也将自动删除。为此,我们举一个房子和房间的例子。任何房子都可以有几个房间。一个房间不能成为两个不同房屋的一部分。所以,如果删除房屋,房间也将被删除。
面向对象编程的优点:
- 面向对象编程为程序提供易于理解和清晰的模块化结构。
- 为面向对象程序创建的对象可以在其他程序中重用。因此它节省了大量的开发成本。
- 大型程序很难编写,但如果开发和设计团队遵循 OOPS 概念,那么他们可以更好地设计并且具有最小的缺陷。
- 它还增强了程序模块性,因为每个对象都是独立存在的。
比较 OOPS 与其他编程风格
让我们通过示例来理解 OOP 与其他编程方法的不同之处。
编程语言可以分为 3 种主要类型
- **非结构化编程语言:**所有编程语言中最原始的,具有顺序控制流。代码在整个程序经常重复
- **结构化编程语言:**具有非顺序控制流。函数的使用允许重用代码。
- 面向对象编程:将数据和动作结合在一起。
让我们通过一个例子来理解这三种类型。
假设你要创建具有类似功能的银行软件
- 存款
- 取款
- 余额查询
非结构化编程语言
所有编程语言中最早的都是非结构化编程语言。非结构化编程语言中的银行应用程序的基本代码将具有两个变量,一个是帐号,另一个用于帐户余额
int account_number=20;
int account_balance=100;
假设存入 100 美元。
account_balance=account_balance+100
接下来,你需要显示帐户余额。
printf(“Account Number=%d,account_number)
printf(“Account Balance=%d,account_balance)
现在取出 50 美元的金额。
account_balance=account_blance-50
同样,你需要显示帐户余额。
printf(“Account Number=%d,account_number)
printf(“Account Balance=%d,account_balance)
对于任何进一步的存款或取款操作 - 你将重复相同的代码。
结构化编程
随着结构化编程的到来,代码上的重复行被放入诸如函数或方法之类的结构中。只要需要,就可以简单地对函数进行调用。
void showData(){
printf "Account Number = %d", account_number
printf("Account Balance = %d", account_balance)
}
int account_number = 20;
int account_balance = 100;
account_balance = account balance+100
showData();
account_balance = account balance-50
showData();
面向对象的编程
在我们的程序中,我们处理数据或对数据执行特定操作。事实上,在任何软件程序中拥有数据并对该数据执行某些操作是非常基本的特征。
软件编程专家就想着去结合数据和操作。
OOPS 中的相同代码将具有相同的数据,并对该数据执行某些操作。
Class Account{
int account_number;
int account_balance;
public void showdata(){
system.out.println("Account Number"+account_number)
system.outprintln("Account Balance"+ account_balance)
}
}
通过结合数据和行动,我们将获得比结构编程更多的优势,即
- 抽象
- 封装
- 继承
- 多态性
在后续教程中将更详细地讨论它们。