Java学习笔记第15期——Java 面向对象 Part1


前言

在之前的学习中,我们学习了Java的一些基础语法,这篇文章我们就来学习Java语言的一个难点——面向对象(OOP)

什么是面向对象?

Java是一种面向对象的编程语言。面向对象编程,英文是Object-Oriented Programming,简称OOP。

如果你以前没有接触过面向对象的编程语言,那可能需要先了解一些面向对象语言的一些基本特征,在头脑里头形成一个基本的面向对象的概念,这样有助于你更容易的学习 Java 的面向对象编程

Java作为一种面向对象语言,支持以下基本概念:

  • 多态
  • 继承
  • 封装
  • 抽象
  • 对象
  • 实例
  • 方法
  • 重载

回归正题。

现实世界中,我们定义了“人”这种概念,而具体的人有“Linus”、“MJ”、“川普”等一个个具体的人。所以,“人”可以视作为一个类(class),而具体的人就是实例(instance)

现实世界

计算机模型

代码

人間


class Person { }

Linus

实例

Person linus = new Person()

MJ

实例

Person mj = new Person()

川普

实例

Person trump = new Person()

java quartz 配置_Java

看完这张图应该就明白类,实例,和对象的关系了

所以,只要理解了类和实例的概念,基本上就明白了什么是面向对象编程。

定义类

class Person {
    public String name;
    public int age;
}

一个class可以包含多个字段(field),字段用来描述一个类的特征,也就是上面那张图的Property。上面的,我们定义了两个field,一个是String类型的,命名为name,另一个是int类型的命名为age。通过class,把一组数据汇集到一个对象上,实现了封装

class前面可以加上publicpublic是用来修饰字段的,它表示这个字段可以被外部访问。与其对应的是private,之后细讲

记得之前提到的String类型吗?这就是JDK源码中定义的类型。定义class其实就是定义了一种数据类型。

创建实例

如果要根据对象创建出对象实例,就得用new操作符。(就是常说的new一个对象[doge] )

拿懂王举例子:

Person trump = new Person();

上述代码创建了一个Person类型的实例,并通过变量trump指向该实例。

有了trump这个变量,我们就可以操作这个实例:

/* main方法啥的就省了哈 */
Person trump = new Person();
trump.name = "Donald Trump"; // 对field name赋值
trump.age = 74; // 对field age赋值
System.out.println(trump.name); // 访问field name
┌─────────────────────┐
trump ─────>│Person instance      │
            ├─────────────────────┤
            │name = "Donald Trump"│
            │age = 74             │
            └─────────────────────┘

每个instance拥有class定义的name和age字段,且各自都有一份独立的数据,互不干扰。就像两只狗类,每只狗有各自的毛发颜色,品种。

小结

定义class就是定义了一种数据类型,对应的instance是这种数据类型的实例;

class定义的field,在每个instance都会拥有各自的field,互不干扰;

通过new操作符创建instance,然后让一个变量指向它,即可通过变量来引用这个instance

访问实例字段的方法是变量名.字段名;

指向instance的变量都是引用变量。


時辛丑年叁月拾日

寫於公元貳零貳壹年肆月貳拾壹日

The end