对象导向编程概念对于编程来说非常重要,没有对OOPS概念的了解,你就无法在对象导向编程模型中设计系统。
什么是面向对象的编程模型?
面向对象的编程模型围绕着对象的概念旋转。 什么是对象? 对象是一个类的实例。 它包含属性和功能。 它们就像真实世界的对象。 例如,你的车、房子、笔记本电脑等都是对象。 它们有某些特定的属性和方法来执行某些操作。 ** 什么是类?** 类定义了对象的蓝图。 它们定义了对象的属性和功能性。
OOPS 概念
Core OOPS concepts are:
- 抽象
- 包装
- 多样性
- 继承
- 协会
- 聚合
- 组成
我们将使用Java编程语言为代码示例,以便您知道如何在Java中实施OOPS概念。
1、抽象
抽象是隐藏内部细节并用简单的术语描述事物的概念,例如,一种添加两个整数的方法。该方法的内部处理是隐藏于外部世界的。在面向对象的编程中,有许多方法可以实现抽象,如封装和继承。一个Java程序也是抽象的一个很好的例子。
进一步阅读: 什么是OOPS中的抽象化?
二、封锁
Encapsulation是用来实现对象导向编程中的抽象技术,用于限制类成员和方法的访问。 Access modifier关键字用于对象导向编程中的封装。
二、多元化
Polymorphism 是物体在不同情况下行为不同的概念,有两种类型的多样性 - 编译时间多样性和运行时间多样性。 编译时间多样性是通过 [方法过载]( / 社区 / 教程 / 方法过载-in-java)实现的。
1public class Circle {
2
3 public void draw(){
4 System.out.println("Drwaing circle with default color Black and diameter 1 cm.");
5 }
6
7 public void draw(int diameter){
8 System.out.println("Drwaing circle with default color Black and diameter"+diameter+" cm.");
9 }
10
11 public void draw(int diameter, String color){
12 System.out.println("Drwaing circle with color"+color+" and diameter"+diameter+" cm.");
13 }
14}
在这里,我们有多个绘图
方法,但它们有不同的行为。这是一个方法过载的案例,因为所有方法的名称是相同的,而论点是不同的。在这里,编译器将能够识别在编译时间上调用的方法,因此它被称为编译时间多样性。当我们有对象之间的IS-A
关系时,运行时间多样性被实施。这也被称为代替方法,因为子类必须取代运行时间多样性的超级类方法。如果我们在超级类方面工作,实际的实施类将在运行时决定。编译器无法决定将被调用到哪个类的方法。这个决定是在运行时做,因此这个名字被称为运行时间多样性或动态调用方法。
1package com.journaldev.test;
2
3public interface Shape {
4
5 public void draw();
6}
1package com.journaldev.test;
2
3public class Circle implements Shape{
4
5 @Override
6 public void draw(){
7 System.out.println("Drwaing circle");
8 }
9
10}
1package com.journaldev.test;
2
3public class Square implements Shape {
4
5 @Override
6 public void draw() {
7 System.out.println("Drawing Square");
8 }
9
10}
形状
是超级类,有两个子类圆形
和方块
。
1Shape sh = new Circle();
2sh.draw();
3
4Shape sh1 = getShape(); //some third party logic to determine shape
5sh1.draw();
在上述示例中,java 编译器不知道在运行时使用的 Shape 的实际实现类,因此运行时的多样性。
四、继承
Inheritance是面向对象的编程概念,其中一个对象是基于另一个对象的。 继承是代码重复使用的机制。 被继承的对象被称为超级类,继承超级类的对象被称为子类。
1package com.journaldev.java.examples1;
2
3class SuperClassA {
4
5 public void foo(){
6 System.out.println("SuperClassA");
7 }
8
9}
10
11class SubClassB extends SuperClassA{
12
13 public void bar(){
14 System.out.println("SubClassB");
15 }
16
17}
18
19public class Test {
20 public static void main(String args[]){
21 SubClassB a = new SubClassB();
22
23 a.foo();
24 a.bar();
25 }
26}
5、协会
协会是OOPS概念,用来定义对象之间的关系。 协会定义对象之间的多样性,例如教师和学生对象。 教师与学生之间存在一对多的关系。 同样,学生可以与教师对象有一对多的关系,但学生和教师对象都是相互独立的。
合并
聚合是一种特殊的关联类型,在聚合中,对象有自己的生命周期,但有所有权。
6、组成
组合是组合的一个特殊情况,组合是组合的一种更具限制性的形式,当HAS-A
关系中包含的对象不能单独存在时,那么它是一种组合的情况,例如,房子有一个房间,这里没有房间,房间就不能存在。 组合被称为比继承更好,阅读更多在 组合与继承。
进一步阅读: [Java作文]( / 社区 / 教程 / composition-in-java - 例子)
这就是关于OOPS概念的快速回顾。
您可以从我们的 GitHub 存储库浏览更多 Java 示例程序。