Java类的定义和使用(非常详细)
类是 Java 中的一种重要的引用数据类型,是组成 Java 程序的基本要素,它封装了一类对象的数据和操作。
根据语法表示符号约定,在语法说明中,中括号([])表示其中内容可以省略;竖线(|)表示“或关系”,如 abstract|final,表示可以使用 abstract 或 final 关键字,两个关键字不能同时出现。
定义 Person 类的代码如下:
通过这个类的定义,可以创建多个 Person 对象,每个对象都有自己的 name 和 age 属性,并可以调用 sayHello() 方法来打印自己的自我介绍。
代码解释如下:
创建对象包括两个步骤:
1) 声明对象类型,与声明普通变量没有区别,语法格式如下:
2) 实例化对象,实例化过程分为两个阶段:为对象分配内存空间和初始化对象,首先使用 new 运算符为对象分配内存空间,然后调用构造方法初始化对象。示例代码如下:
解释如下:
示例代码如下:
Java类的定义
Java 语言中一个类的实现包括:类声明和类体。类声明语法格式如下:[public][abstract|final] class className [extends superclassName] [implements interfaceNameList] { // 类体 }
- class 是声明类的关键字,className 是自定义的类名;
- class 前面的修饰符 public、abstract、final 用来声明类,它们可以省略,它们的具体用法后面章节会详细介绍;
- superclassName 为父类名,可以省略,如果省略,则该类继承 Object 类,Object 类为所有类的根类,所有类都直接或间接继承 Object 类;
- 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() 方法来打印自己的自我介绍。
代码解释如下:
-
代码第 ① 处定义一个名为 Person 的类。class 是 Java 中定义类的关键字,后面跟着类的名称 Person。类体用花括号
{ }
括起来,其中包含类的成员(属性和方法)的定义。 - 代码第 ② 处定义一个成员变量 name,它是字符串类型的属性(成员变量)。在 Person 类中,name 用于表示一个人的姓名。
- 代码第 ③ 处定义一个成员变量 age,它是整数类型的属性(成员变量)。在 Person 类中,age 用于表示一个人的年龄。
-
代码第 ④ 处定义一个名为 sayHello 的方法。public 是访问修饰符,表示这个方法是公共的,可以被其他类访问。void 表示这个方法不返回任何值。方法名是 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() 方法,分别打印两个人物的自我介绍。
解释如下:
- 代码第 ① 处创建了一个名为 person1 的 Person 对象。通过 new 关键字,我们在堆内存中分配了一个新的 Person 对象,并将其引用赋给 person1 变量。
- 代码第 ② 处调用 person1 对象的 name 属性赋值,将字符串"爱丽丝"赋给 name。因为 name 是 Person 类的成员变量,我们可以通过对象的引用(person1)来访问和修改这个属性。
- 代码第 ③ 处为 person1 对象的 age 属性赋值,将整数 25 赋给 age。
- 代码第 ④ 处调用了 person1 对象的 sayHello() 方法。通过对象的引用(person1),我们可以调用类中的公共方法。
- 代码第 ⑤ 处创建了另一个名为 person2 的 Person 对象。同样地,我们在堆内存中分配了一个新的 Person 对象,并将其引用赋给 person2 变量。
空对象
一个引用变量,若没有通过 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(); }