面向对象编程,是一种通过对象的方式,把现实世界映射到计算机模型的一种编程方法。
现实世界中,我们定义了“人”这种抽象的概念,而具体的人则是“小明”“小红”“小军”等一个个具体的人。所以,“人”可以定义为一个类(class),而具体的人则是实例(instance)。
| 现实世界 | 计算机模型 | Java代码 |
|---|---|---|
| 人 | 类/class | class Person{} |
| 小明 | 实例/Ming | Person ming = new Person() |
| 小红 | 实例/Hong | Person hong = new Person() |
| 小军 | 实例/Jun | person jun = new Person() |
同样的“书”也是一种抽象的概念,所以它是类,而《Java核心技术》、《Java编程思想》则是实例
…
所以只要理解了class和instance概念,基本上就明白了什么是面向对象编程。
class是一种对象模(mú)板
模板或称样板、范本,通常指具有固定内容、可构建多个不同实例的可重用样板,—— 模板
intance是对象实例,instance是根据class创建的实例。可以创建多个instance,他们类型相同,但各自属性可能不同。
定义class
在Java中,创建一个类,例如给这个类命名为Person,就是定义了一个class
public class Person{public String name;public int age;}
一个class可以包含多个字段(field),字段用来描述一个类的特征,上面我们定义了一个String类型的属性命名为name,还定义了一个int类型的属性,命名为age。就这样通过class,将一组数据汇集到一个对象上,实现了数据封装。
public 表示这个字段可以被外部访问。
创建实例
定义了class,只是定义了对象模板,想要根据对象模板创建出真正实例,必须使用new操作符
new操作符可以创建一个实例,然后我们需要定义一个引用类型的变量来指向实例
Person ming = new Person();
上述代码创建了一个Person类型的实例,并通过ming指向它。
注意区分Peron ming是定义Person类型的变量,而new Preson()是创建Person实例。
有了这个指向实例的变量,我们就可以通过这个变量来操作实例了。访问实例变量可以用变量.字段
练习:
请定义一个City类,该class具有如下字段
- name:名称,String类型
- latitude:纬度,double类型
- longitude:经度,double类型
```java
public class Main{
public static void main(String[] args) {
} }City bj = new City();bj.name = "Beijing";bj.latitude = 39.903;bj.longitude = 116.401;System.out.println(bj.name);System.out.println("Location:"+bj.latitude+", "+ bj.longitude);
class City{ public String name; public double latitude; public double longitude; } ```
小结:
- 在OOP中,class与instance 是“模板”和“实例”的关系
- 定义
class就是定义了一种数据类型,对应的instance就是这种数据类型的实例 - 每个
instance都会拥有各自的field,且互不干扰 - 指向
instance的变量都是引用变量
