Java中的OOPS概念

时间:2020-02-23 14:37:22  来源:igfitidea点击:

面向对象的编程概念对于编程非常重要。
如果不了解OOPS概念,您将无法在面向对象的编程模型中设计系统。

什么是面向对象的编程模型?

面向对象的编程模型围绕对象的概念展开。

什么是物体?

对象是类的实例。
它包含属性和功能。
它们就像现实世界中的对象。
例如,您的汽车,房屋,笔记本电脑等都是对象。
它们具有一些特定的属性和方法来执行某些操作。

什么是类?

该类定义了对象的蓝图。
它们定义了对象的属性和功能。
例如,笔记本电脑是一个类,而笔记本电脑是它的一个实例。

OOPS概念

OOPS的核心概念是:

  • 抽象化
  • 封装形式
  • 多态性
  • 遗产
  • 协会
  • 聚合
  • 组成

让我们逐一研究这些面向对象的编程概念。
我们将使用Java编程语言作为代码示例,以便您知道如何在Java中实现OOPS概念。

1.抽象

抽象是隐藏内部细节并用简单术语描述事物的概念。
例如,一个将两个整数相加的方法。
该方法的内部处理对于外部世界是隐藏的。
在面向对象的程序设计中有很多方法可以实现抽象,例如封装和继承。

Java程序也是抽象的一个很好的例子。
其中java负责将简单的语句转换为机器语言,并从外部隐藏了内部实现细节。

进一步阅读:OOPS中的抽象是什么?

2.封装

封装是用于在面向对象的程序设计中实现抽象的技术。
封装用于限制对类成员和方法的访问。

访问修饰符关键字用于面向对象编程中的封装。
例如,使用privateprotectedpublic关键字可以实现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"关系中包含的对象无法单独存在,则说明存在这种情况。
例如,房屋有一个房间。
这里的房间没有房子就不存在。