Java中的OOPS概念
面向对象的编程概念对于编程非常重要。
如果不了解OOPS概念,您将无法在面向对象的编程模型中设计系统。
什么是面向对象的编程模型?
面向对象的编程模型围绕对象的概念展开。
什么是物体?
对象是类的实例。
它包含属性和功能。
它们就像现实世界中的对象。
例如,您的汽车,房屋,笔记本电脑等都是对象。
它们具有一些特定的属性和方法来执行某些操作。
什么是类?
该类定义了对象的蓝图。
它们定义了对象的属性和功能。
例如,笔记本电脑是一个类,而笔记本电脑是它的一个实例。
OOPS概念
OOPS的核心概念是:
- 抽象化
- 封装形式
- 多态性
- 遗产
- 协会
- 聚合
- 组成
让我们逐一研究这些面向对象的编程概念。
我们将使用Java编程语言作为代码示例,以便您知道如何在Java中实现OOPS概念。
1.抽象
抽象是隐藏内部细节并用简单术语描述事物的概念。
例如,一个将两个整数相加的方法。
该方法的内部处理对于外部世界是隐藏的。
在面向对象的程序设计中有很多方法可以实现抽象,例如封装和继承。
Java程序也是抽象的一个很好的例子。
其中java负责将简单的语句转换为机器语言,并从外部隐藏了内部实现细节。
进一步阅读:OOPS中的抽象是什么?
2.封装
封装是用于在面向对象的程序设计中实现抽象的技术。
封装用于限制对类成员和方法的访问。
访问修饰符关键字用于面向对象编程中的封装。
例如,使用private
,protected
和public
关键字可以实现Java的封装。
3.多态性
多态是在不同情况下对象行为不同的概念。
多态有两种类型-编译时多态和运行时多态。
通过方法重载可以实现编译时多态。
例如,我们可以有一个如下的类。
public class Circle { public void draw(){ System.out.println("Drwaing circle with default color Black and diameter 1 cm."); } public void draw(int diameter){ System.out.println("Drwaing circle with default color Black and diameter"+diameter+" cm."); } public void draw(int diameter, String color){ System.out.println("Drwaing circle with color"+color+" and diameter"+diameter+" cm."); } }
这里我们有多种draw
方法,但是它们具有不同的行为。
这是方法重载的一种情况,因为所有方法的名称都相同,而参数则不同。
其中编译器将能够识别要在编译时调用的方法,因此,它被称为编译时多态性。
当对象之间具有" IS-A"关系时,将实现运行时多态。
这也称为方法重写,因为子类必须重写超类方法以实现运行时多态。
如果我们在超类方面工作,则实际的实现类在运行时确定。
编译器无法决定将调用哪个类方法。
该决定是在运行时完成的,因此名称为运行时多态或者动态方法分派。
package com.theitroad.test; public interface Shape { public void draw(); }
package com.theitroad.test; public class Circle implements Shape{ @Override public void draw(){ System.out.println("Drwaing circle"); } }
package com.theitroad.test; public class Square implements Shape { @Override public void draw() { System.out.println("Drawing Square"); } }
形状是超类,有两个子类:圆和方。
下面是运行时多态的示例。
Shape sh = new Circle(); sh.draw(); Shape sh1 = getShape(); //some third party logic to determine shape sh1.draw();
在以上示例中,java编译器不知道将在运行时使用的Shape的实际实现类,因此,运行时多态性。
4.继承
继承是一种面向对象的编程概念,其中一个对象基于另一个对象。
继承是代码重用的机制。
被继承的对象称为超类,而继承超类的对象称为子类。
我们在Java中使用extends
关键字来实现继承。
以下是Java中继承的简单示例。
package com.theitroad.java.examples1; class SuperClassA { public void foo(){ System.out.println("SuperClassA"); } } class SubClassB extends SuperClassA{ public void bar(){ System.out.println("SubClassB"); } } public class Test { public static void main(String args[]){ SubClassB a = new SubClassB(); a.foo(); a.bar(); } }
5.协会
关联是定义对象之间关系的OOPS概念。
关联定义对象之间的多重性。
例如,教师和学生对象。
师生之间存在一对多的关系。
同样,学生可以与教师对象建立一对多关系。
但是,学生和教师对象都是相互独立的。
聚合
聚合是一种特殊的关联类型。
在聚合中,对象有其自己的生命周期,但有所有权。
只要对象与所有权之间具有" HAS-A"关系,便属于聚合情况。
6.组成
组合是聚合的特例。
组合是限制更严格的聚合形式。
如果" HAS-A"关系中包含的对象无法单独存在,则说明存在这种情况。
例如,房屋有一个房间。
这里的房间没有房子就不存在。