首页 > 编程笔记 > Java笔记 阅读:119

Java类的定义和使用(非常详细)

类是 Java 中的一种重要的引用数据类型,是组成 Java 程序的基本要素,它封装了一类对象的数据和操作。

Java类的定义

Java 语言中一个类的实现包括:类声明和类体。类声明语法格式如下:
[public][abstract|final] class className [extends superclassName] [implements interfaceNameList] {
    // 类体
}

根据语法表示符号约定,在语法说明中,中括号([])表示其中内容可以省略;竖线(|)表示“或关系”,如 abstract|final,表示可以使用 abstract 或 final 关键字,两个关键字不能同时出现。

定义 Person 类的代码如下:
class Person { // ①
    // 属性(成员变量)
    String name; // ②
    int age; // ③

    // 方法(成员方法)
    public void sayHello() { // ④
        System.out.println("你好,我叫" + name + ",今年" + age + "岁。");
    }
}
在上述代码中,定义了一个名为 Person 的类,这个类有两个成员变量 name 和 age,分别用于表示一个人的姓名和年龄。类还有一个名为 sayHello() 的成员方法,用于打印一个简单的自我介绍。

通过这个类的定义,可以创建多个 Person 对象,每个对象都有自己的 name 和 age 属性,并可以调用 sayHello() 方法来打印自己的自我介绍。

代码解释如下:

Java创建对象

在面向对象的编程过程中,类和对象无处不在,类是对象的“加工厂”,是创建对象的“模板”。使用类创建对象的过程也被称为“实例化”。

创建对象包括两个步骤:
1) 声明对象类型,与声明普通变量没有区别,语法格式如下:
type objectname;
其中,type 是引用类型,即类、接口、枚举和数组。示例代码如下:
String name;
该语句声明了字符串类型变量 name,但此时并未为对象分配内存空间,而只是分配一个引用。

2) 实例化对象,实例化过程分为两个阶段:为对象分配内存空间和初始化对象,首先使用 new 运算符为对象分配内存空间,然后调用构造方法初始化对象。示例代码如下:
public class Main {
    public static void main(String[] args) {
        // 创建 Person 对象
        Person person1 = new Person(); // ①
        person1.name = "爱丽丝"; // ②
        person1.age = 25; // ③
       
        // 调用对象的方法
        person1.sayHello(); // ④
       
        // 创建另一个 Person 对象
        Person person2 = new Person(); // ⑤
        person2.name = "鲍勃";
        person2.age = 30;
       
        // 调用对象的方法
        person2.sayHello();
    }
}
在 main() 方法中,创建了两个 Person 对象(person1 和 person2),分别为它们的 name 和 age 属性赋值,然后调用它们的 sayHello() 方法,分别打印两个人物的自我介绍。

解释如下:

空对象

一个引用变量,若没有通过 new 分配内存空间,这个对象就是空对象。Java 使用关键字 null 表示空对象。

示例代码如下:
String name = null;
name = "Hello World";
引用变量默认值是 null。当试图调用一个空对象的实例变量或实例方法时,会抛出空指针异常 NullPointerException,代码如下所示:
String name = null;
// 输出 null 字符串
System.out.println(name);
// 调用 length() 方法
int len = name.length(); // ①
当代码运行到第 ① 处时,系统会抛出异常。这是因为调用 length() 方法时,name 是空对象。程序员应该避免调用空对象的成员变量和方法,代码如下:
// 判断对象是否为 null
if (name != null) {
    int len = name.length();
}

相关文章