名词:

OOP(Object Oriented Programming) 面向对象编程

POP(Process-oriented programming) 面向过程编程

# 一、什么是面向对象编程

任何事物都可以抽象为对象,对象通常包含属性和行为,通过属性来表示事物的特征,行为表示事物的操作。

比如:人就可以抽象为一个对象。 名字,身高体重就是属性。 吃饭,睡觉,敲代码,面试回答问题,就是行为。

在 java 以 “类” 的方式来表示一个对象。面向对象编程,就是代码的编写围绕着抽象的对象进行展开。

# 二、面向对象与面向过程的区别

# 面向过程

以事件为中心。针对事件进行分析,分析出流程步骤,然后按照顺序针对这些流程步骤进行实现。

# 面向对象

以“对象”为核心,在宏观上将事件进行高度的抽象,微观上使用面向过程进行对象间的串联。

# 三、面向对象的特征

# 封装

在面向对象编程中,对象是封装的基本单位。

面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个模块中,也就是一个类中,属性用变量定义,行为用方法定义,方法可以直接访问同一个对象的属性。

封装把握的一个原则是:对同一事物进行操作的方法和相关的方法放在同一类中,把方法和它的操作数据放在同一个类中。

封装是保证软件部件具有优良的模块化的基础,封装的目标就是要实现软件部件的“高内聚,低耦合”,防止程序相互依赖性带来的变动影响。(比如:面向过程编程,可能因为步骤的变更需要对整体代码进行变更,面向对象,不行的话,直接更换对应的类。)

# 抽象

抽象就是找出一些事物的相似和共性,然后将其抽象成为一个类,这个类只考虑这些事物的相似或者共性,或者说抽象出我们需要的共性,而不用考虑太多与目标无关的细节。

以人来说,人很复杂,但是所有人都可以抽象出一些共性来,比如说:姓名,年龄,兴趣爱好。 如果需要,我们还可以抽象出,是否结婚,性别等等一系列共性来,这就是抽象。

class Person{
	int age;
	String name;
	List<String> hobby;
}

抽象也有点像是一个模板,或者表格,将事物通过我想要的方式来进行展示,比如说,面试前填写的表格,就是对我的一个抽象,在代码中,如果用 Person类来表示我,就是通过代码的方式对我进行一个抽象。

# 继承

在定义和实现一个类的时候,可以在一个已经存在的类的基础上进行,把这个已经存在的类所定义的内容作为自己的内容,并可以再次基础上进行添加,或者修改原有方法。 继承可以提高软件的可重用性和可扩展性。

# 多态

多态是指程序中定义的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时是不确定的,而在程序运行期间才能够确定。 比如:

public interface Eat{
	void eat();
}

public class LeftHandEat implements Eat{
	@Override
	void eat(){
		System.out.println("使用左手吃饭");
	}
}

public class RightHandEat implements Eat{
	@Override
	void eat(){
		System.out.println("使用右手吃饭");
	}
}

public class Test{
	public static void main(){
		// 无论那只手都可以吃饭
		// 这就是多态
		Eat eat = getEat();
		eat.eat();
	}

	public static Eat getEat(){
		// 模拟自动选择那只手吃饭
		return RightHandEat();
	}

}

小贴士:实现多态的机制

多态的实现靠的是父类或接口的引用变量可以指向子类或具体实现类的实例对象,而程序调用的方法在运行期才动态绑定,就是引用变量所指向的具体实例对象的方法,也就是内存里正在运行的那个对象的方法,而不是引用变量的类型中定义的方法。

最近更新时间: 7/12/2020, 9:24:26 PM