Java是一门面向对象语言,一个Java程序就是一系列对象(Object)的集合,对象通过方法调用来彼此协作完成特定的功能。

初识面向对象

面向对象是一种非常符合人类思维的编程方法,因为现实世界就是由对象和对象之间的交互来构成的,所以我们其实很容易将现实世界映射到软件开发中。

一辆汽车、一篇博客、一个人,对应到软件系统中都是一个对象;而对象具有自己的状态和行为。

以汽车为例:

  • 一辆汽车可以拥有油耗、颜色、轴距、速度等状态属性
  • 一辆汽车可以拥有启动、行驶、加减速、刹车等方法

类描述一类对象的状态和行为的模板。可以把类想象成一个汽车设计图,根据这个汽车设计图生产出来的每一辆汽车就是类的一个实例,这些实例就称之为对象。

public class Car {
    int color; // 成员变量
    int speed; // 成员变量
 
    // 成员方法   
    void startup() {
        System.out.println("启动!");
    }

    // 成员方法
    void run(int speed) {
        System.out.println("我的速度是" + speed);
    }
}

再比如说我们要做一个博客应用,那么每一篇博客都有类似的状态和行为,那么我们可以定义一个Post类作为这些博客的模板。

public class Post {
    String title; // 成员变量
    String content; // 成员变量
    
    // 成员方法
    void print() {
        System.out.println(title);
        System.out.println(content);
    }
}

public是一个修饰符,表示外部可以访问这个类。

Post的状态和行为就分别体现为内部定义的成员变量和成员方法上。

成员变量

一个对象的状态是通过成员变量的值决定的。

比如每一辆汽车都有自己的颜色和速度,因此我们在Car类中定义了两个成员变量,通常我们也称之为属性:

int color;
int speed;

成员变量都有数据类型,colorspeed都是int类型,即一个整数。

类似地,每一篇博客都有它自己的标题和内容,因此我们在Post类中定义了两个成员变量:

String title;
String content;

titlecontent都是String类型的属性,即通过一个字符串来表示。

成员方法

方法定义了类的行为,一个类可以有很多方法,在方法中可以编写逻辑,操纵数据,执行特定动作。有时也称方法为函数。

一个相对独立的计算过程(即对象的某种行为),通过一个方法来完成,在需要的时候即可复用这样的过程,这样可以使得程序更细清晰易懂。

比如Car有一个命名为startup()的方法,表示汽车启动:

void startup() {
    System.out.println(“启动!”);
}

这个方法向控制台打印一行简单的文字。

Post类提供了一个打印博客内容的方法:

void print() {
    System.out.println(title);
    System.out.println(content);
}

print()方法将一个Posttitlecontent逐行打印出来。

startup()print()方法是一个没有返回值和参数的方法。没有返回值的情况,使用void表示。

创建和使用对象

以HelloWorld为例,定义好Post类之后,可以在main方法中来创建和使用Post对象。

public class HelloWorld {  
    
    public static void main(String[] args) {  
        Post post = new Post(); // 创建博客对象      
        post.title = "博客"; // 访问对象属性
        post.content = "第一篇博客";  // 访问对象属性
        post.print(); // 调用对象方法
        
    }
}

需要给声明对象的类型为Post,并进行命名,代码中命名为postpost就是一个标识符);然后需要使用new关键字创建Post对象。

这里创建的post变量是函数内的局部变量,也可以命名为其它任何合法的标识符,比如:

Post myPost = new Post();

变量一般都是以小写开头,使用驼峰命名。

局部变量与成员变量不同,它不属于某个对象,是一个临时变量,当方法执行结束,变量就不再起作用了。一个方法中声明的变量都属于局部变量。

现在已经有一个Post对象了,可以访问其属性和方法, 使用.连接对象名和属性/方法名:

  • post.title = "博客"post对象的title属性进行赋值。
  • post.print()这一行代码调用post对象的print()函数。

运行程序可以看到下面的输出:

博客
第一篇博客

包(package)

在开发过程中,类的数量会越来越多,可以通过包(Package)来组织类。包的命名一般以一个组织的域名的反写开头