7. 初步理解面向对象 【连载 7】

面向对象是一种主流的编程思维,其核心是把现实世界中的对象,对象之间的关系模拟到程序世界中,构造一个软件系统。

Java 是一种典型的面向对象编程语言。这篇文章主要是来初步理解一下面向对象的思维为下面的内容先给一个基础。针对 Java 面向对象编程的更多内容,会在后面的文章里面详细解释。

面向对象的思维里面有两个重要的概念,对象和类。下面,逐个理解这两个概念。

1. 什么是对象?

一个鼠标,一个小狗,一个男孩,一个足球,美女和汽车,他们都是一个对象,这些都是我们现实世界中客观存在的东西,能看得见,摸得着。他们都称之为“对象”。每个对象都有他的属性和行为,比如小狗,棕色的皮毛,圆圆的眼睛,这是它的属性,小狗可以跑,可以叫,这是它的行为。什么是对象,现在很清楚了:

对象:世界中客观存在的东西,具有自己的属性和行为

7. 初步理解面向对象 【连载 7】

2. 什么是类?

7. 初步理解面向对象 【连载 7】

下面来理解另外一个重要的概念: ,来,先看一下这个图片:美女和汽车,是这个人的认知,是抽象的概念,不是客观存在的具体事物。什么是美女呢,很多女明星都可以称之为美女,五官精致,身材好,所有我们称之为美女,此处的美女不是具体指某一个真实的人,而是一个统称,一个认知对吧。在这里“美女”就是一个类的概念,它是一个对具体对象特性的一个抽象概括,是一个概念。同理,这里的汽车也是一个类的概念。

类:对现实世界对象的抽象总结,一个概念,不是客观存在的。

3. 类和对象的关系

7. 初步理解面向对象 【连载 7】

OK,接下来,讨论一下类和对象的关系。上面这个图片中男孩脑袋中产生的一个概念“girl” 是一个类的概念,这个概念具有世界上所有女孩的特征。左边几个不同国家的女孩,则是真实存在的对象,是对“girl”这个概念(类)的具体体现。

再看,汽车的小图,虚线的 car 则是一个类的概念,这里可以把它理解为汽车的设计,也是模板,这里面包含了所有汽车共有的一些属性和行为,右边三个不同颜色不同品牌的汽车,则是真实的对象。他们是根据左边的汽车的模板(类),而生产的不同的可以使用的汽车。所有这里可以理解为类是对象的模板,通过类,可以创建具有共同标准,又有个性差异的对象。

OK,那么来总结一下类和对象的关系:

类是描述一类对象属性和行为的模板(蓝图或者设计),对象是类的一个具体呈现(实现)

4. Java 的面向对象

到这里,已经理解了面向对象的几个重要的概念。那么 Java 编程中到底是怎么来用“面向对象”这种思维模式来编程的呢?

OK,假如你是一个外星人,刚来到地球,看到马路上跑的四个轮子的汽车,搞不懂是什么。这个时候,我用人类的语言来给你解释,像图片中左边部分那样,“汽车是一类什么东西”,那么对于 Java 的事件,则会用 public class Car {}这段代码来描述一个类,下面一个汽车的属性和行为,在 Java 语言中同样也有对应的映射,就是变量和函数。

其实,把人类世界对象,抽象映射到程序世界中的过程,就是面向对象的思维。这个行为一个专业的名字,称为“建模”。之后,我们再用 Java 编程语言,把这种映射编写出来,就是 Java 的面向对象编程啦。好,先理解到这,就可以。

7. 初步理解面向对象 【连载 7】

Java面向对象的编程,就像用 Java 语言讲故事,把现实世界抽象、映射到 Java 的世界。

5. 使用对象

现在,已经对面向对象有一个不错的理解了。那么在 Java 中怎么来使用对象呢,在上面的过程中,我们编写了一个 汽车的类(Car),怎么样根据这个汽车的模板,来生产汽车呢。

7. 初步理解面向对象 【连载 7】

Java 中创建生产对象的方法,就是使用类的构造方法,来构造对象,对应的代码是这个样子:Car polo = new Car(180,"green", "polo");, 这句代码的意思是,构建了一个速度是180,颜色是green,品牌是polo的汽车对象,并给这个对象指定了一个名字:polo。这个过程也叫new一个汽车对象polo

只有产生对象之后,才可以调用该对象的方法

polo.startup();

这句代码就意思,让polo这个车启动。也就是调用了polo对象的startup方法。

下面是完整的代码,你可以自己来编写几遍,然后执行它。直到你很熟练的自己能够完成。

public class Car {
    // 汽车的速度(属性)
    int speed;
    // 汽车的颜色(属性)
    String color;
    // 汽车的品牌(属性)
    String brand;

    //构造方法,用来创造对象
    public Car(int speed,String color, String brand) {
        this.brand = brand;
        this.color = color;
        this.speed = speed;
    }
    // 汽车的启动函数(行为)
    void startup() {
        System.out.println("汽车启动了......");
        System.out.println("品牌:" + this.brand);
        System.out.println("颜色:" + this.color);
        System.out.println("速度:" + this.speed);
    }

    // 汽车的行驶函数(行为)
    void run(int speed) {
        System.out.println("正以" + speed + "的速度狂奔");
    }

    public static void main(String[] args) {
        // 创建了一个汽车对象:polo
        Car polo = new Car(180,"green", "polo");
        // 创建了一个汽车对象:mini
        Car mini = new Car(120,"blue","mini");
        // 创建了一个汽车对象:beetle
        Car beetle = new Car(100,"red","beetle");

        // 调用对象polo的启动方法(汽车的启动行为)
        polo.startup();
        polo.run(200);

        mini.startup();
        mini.run(80);

        beetle.startup();
        beetle.run(130);
    }
}

控制台输出:

汽车启动了......
品牌:polo
颜色:green
速度:180
正以200的速度狂奔
汽车启动了......
品牌:mini
颜色:blue
速度:120
正以80的速度狂奔
汽车启动了......
品牌:beetle
颜色:red
速度:100
正以130的速度狂奔

先使用对象的模板(类)创造对象,之后可以调用对象的行为,读取对象的属性。扣扣交流群:468439140

总结

OK,最后总结一下几点。来加深一下印象。

  1. 对象:世界中客观存在的东西,具有自己的属性和行为。
  2. 类:对现实世界对象的抽象总结,一个概念,不是客观存在的。
  3. 类和对象:类是描述一类对象属性和行为的模板(蓝图或者设计),对象是类的一个具体呈现(实现)。
  4. Java面向对象的编程:就像用 Java 语言讲故事,把现实世界抽象、映射到 Java 的世界。
  5. 对象的使用:先使用对象的模板(类)创造对象,之后才可以调用对象的行为,读取对象的属性。

在后面的内容里,会更多更深入的来讲 Java 的面向对象编程。