【Java入门】01 Java特性:什么是面向对象编程?

【Java 入门 01】Java 的基础特性


Java 是面向对象编程的语言


按 编程思想 来划分,世界上的编程语言大概可以分为两种,一种是以C语言为首的【面向过程】编程,一种是以Java、Python的【面向对象】编程,如果我以书面化的语言来介绍这两种编程思想,那可能比较难以理解,所以接下来我用例子来说明这两个编程思想的特点,在介绍编程思想之前,我想你能明确一个思想,所谓的编程都是对现实世界的模拟,如果我们接下来要举显示世界的例子来说明这两种编程思想,举的例子很简单:

妈妈早上上班的时候,让小明去超市买两棵白菜、一块猪肉(白菜炖猪肉),如果没有白菜的话,就换成粉丝+猪肉(猪肉炖粉丝);

  • 两种编程思想的执行过程如下

在这里插入图片描述

其中粉红色框框是面向过程编程,黄色框框是面向对象编程,面向过程编程只有一个简单的【过程】,那就是

出门买菜,判断有没有白菜,有的话就买白菜,没有的话就买粉丝;

而面向对象编程则稍微显得更复杂一点:

首先定义三个类
- 儿子类 ,方法:听妈妈的话
- 妈妈类 ,方法:做饭
- 超市类 ,三个属性,分别是:粉丝、白菜、猪肉,这三个属性对应的是各自的剩余量,方法:展示自己的各类属性(猪肉、粉丝、白菜)的剩余量;


在编程的时候,我们首先要在一个 Main(程序中可执行的方法,在目前阶段你可以把它认定成是程序中只能有一个的方法)方法中调用一个【儿子】对象,让【儿子】对象调用【超市】对象,并判断超市中猪肉等属性的值,如果值是0则不买,否则则买一个,然后带回给妈妈;

为了让你们更好地看出如何定义一个类,我接下来通过代码实现一下【超市】这个类:

// superMarket.java文件
// 本代码仅为示例代码,语法上存在错误,但是如果更改正确可能不易于理解,所以暂时这样写
public class superMarker{ 	// `class`这个单词表明这是一个类
	int meal = 3;			// 这是 肉 属性,初始值是3
	int Cabbage = 0;		// 这是 白菜 属性,初始值是0
	int Silt = 2;			// 这是 粉丝 属性,初始值是2

	public int getMeal(){	// 这是 获取肉的数量	的方法,你可以理解成超市里的展示牌
		return meal;		// 返回肉的数量
	}
	public int getCabbage (){ //白菜同上
		return Cabbage;
	}
	public int getSilt(){     // 粉丝同上
		return Silt;
	}
}

通过以上的例子可以看出,我们在使用前,要经历以下步骤:

  • 需要创建一个叫superMarket.java的文件;
  • 在里面写一个class这个class的名称必须要与文件的名称是一致的,里面包含;
    • 三个属性,分别是:肉、白菜、粉丝,
    • 三个方法,分别于用于展示肉、白菜粉丝的剩余数量;
  • 以上只是创建了一个SuperMarket类,同时创建一个son.java以及一个mon.java并且做同样的处理,最后在main函数中调用mom类,mon 调用son类,son 调用 Supermarket类;

读到这里你能的到的信息就是:

  • 面向过程编程 好像 更简单 ( 注意只是好像 )。
  • 面向对象编程没有了过程 ,而是将每一个元素看做一个独立的 个体 ,然后让这些个体来执行操作,现在你的不需要知道这些个体具体是如何去执行的,语法是什么,只要知道面向对象就是 对象 去执行就OK了;

为什么面向过程看着更简单?因为这只是一个执行过程,而现在的工程大部分都不会这么简单,如果出现大型工程的话,那么编程过程将会变得十分难堪且复杂,所以如果将所有的取消过程,转而让对象去执行的话,那么一个工程就变成了:小明找小红做了什么,小红找小东做了什么,小东找小飞做了什么,这样编程的话,更加符合人的思维逻辑,可以让编程逻辑变得更简单。



ok,以上内容就是面向对象编程和面向逻辑编程的基本概念,在最后我再说明一个编程中较为基础的东西,下面这段话我将会解释什么是【解释性语言】什么是【编译性语言】,在当前情况下你完全没必要搞清楚这两者的区别,只是看一下就好,最重要的是上面的内容,什么是面向过程什么是面向对象。



补充:Java 还是编译型语言(什么是编译型语言?)


通过【编程思想】来划分,有了面向对象和面向过程的区别,通过执行过程来划分,则有了【解释性】语言以及【编译性】语言,这两种语言的区别是:是否会产生二进制文件,两者的执行过程大概如下:

在这里插入图片描述

可以看出来,【解释性语言】就是字面意思,当开始执行代码的时候,【解释器】操作的对象是源码,并且采取的是拿到一句解释一句的方式,这像极了翻译官是吧,所以叫它解释,而编译型语言会产生一个中间文件,这个文件是一个二进制文件,要知道我们计算机可不认识我们写的英文单词,所以最后执行的全部都是二进制代码,而解释器也是一个将源码解释成二进制代码的过程,但是解释型语言是解释一句执行一句,而编译型语言是直接生成一个二进制文件再执行,这样就好比汉奸在【小日本】同志面前一句一句翻译和直接做一个文档给【日本同志】看的区别,当然是直接用文件看起来更快更方便,所以解释型语言的执行速度远不如编译型;接下来看个例子:

for i in range(2):
    print("hsbkCool")

以上代码是使用Python语言写成的简单小程序,具体执行过程就是输出两次hsbkCool,那么对于解释性的语言(Python本身就是解释性语言),它的执行过程是:


  • 先解释第一句话,发现这是一个循环语句,并且循环两次,当前循环 0 次
    • 输出一次 'hsbkCool' ,当前执行一次;回到第一句;
  • 满两次了吗?只执行了一次,还没有,在执行一次;
    • 输出一次,满两次了吗?满了,跳出循环
  • 执行结束

以上是解释性语言,而编译型语言,好比Java语言,是直接成圣一个.javac文件,然后执行这个文件,中间的过程我们是看不见的,如果你要细问最后的对二进制文件的执行流程的话,其实类似于解释型语言,但是差别就是执行速度快,且可以在编译的时候就能发现语法错误(汉奸在翻译的时候看见错误是不是得问一下嘞?)。

posted @ 2021-01-11 02:24  不食花生的猫  阅读(126)  评论(0)    收藏  举报