创建类
类的定义就是创建类。通过 class 关键字可以定义自己的数据类型,将属性和行为封装在一起。
示例代码
package V060;
public class Test {
public static void main(String[] args) {
Student s1 = new Student();
s1.name = "张三";
s1.age = 20;
s1.local = "北京";
s1.study();
s1.introduce();
Student s2 = new Student();
s2.name = "李四";
s2.age = 21;
s2.local = "上海";
s2.study();
s2.introduce();
Student s3 = new Student();
s3.introduce(); // 王五,未赋值,直接调用自我介绍
}
}
class Student {
String name;
int age;
String local;
void study() {
System.out.println(name + "正在学习");
}
void introduce() {
System.out.println("大家好,我叫" + name + ",今年" + age + "岁,来自" + local);
}
}
class Grade {
String name;
int number;
}Code language: JavaScript (javascript)
输出结果:
大家好,我叫张三,今年20岁,来自北京
大家好,我叫李四,今年21岁,来自上海
大家好,我叫null,今年0岁,来自null
类的定义结构
class Student {
// 成员变量(属性)
String name;
int age;
String local;
// 成员方法(行为)
void study() {
System.out.println(name + "正在学习");
}
void introduce() {
System.out.println("大家好,我叫" + name + ",今年" + age + "岁,来自" + local);
}
}Code language: JavaScript (javascript)
| 组成部分 | 说明 |
|---|---|
class Student | 定义 Student 类 |
String name | 姓名属性 |
int age | 年龄属性 |
String local | 籍贯属性 |
study() | 学习行为 |
introduce() | 自我介绍行为 |
对象的创建与使用
Student s1 = new Student(); // 创建张三
s1.name = "张三";
s1.age = 20;
s1.local = "北京";
s1.introduce();
Student s3 = new Student(); // 创建王五,未赋值
s3.introduce(); // 成员变量使用默认值Code language: JavaScript (javascript)
| 操作 | 说明 |
|---|---|
new Student() | 在堆中创建对象,成员变量赋予默认值 |
s1.name = "张三" | 通过对象引用给成员变量赋值 |
s1.introduce() | 调用成员方法 |
成员变量的默认值
| 数据类型 | 默认值 |
|---|---|
int | 0 |
double | 0.0 |
boolean | false |
String 及所有引用类型 | null |
王五未赋值直接调用
introduce(),输出name=null, age=0, local=null。
引用类型作为成员变量
class Student {
String name;
int age;
Grade g; // Grade 是另一个类,作为成员变量
}
class Grade {
String name;
int number;
}Code language: JavaScript (javascript)
| 要点 | 说明 |
|---|---|
| 引用类型成员 | 默认值为 null |
| 使用前需赋值 | s1.g = new Grade(); 否则调用 g.name 会抛 NullPointerException |
| 关联关系 | Student 包含 Grade,体现对象之间的组合关系 |
注意事项
| 要点 | 说明 |
|---|---|
| 一个文件多个类 | 一个 .java 文件中可定义多个类,但只能有一个 public 类 |
public 类名 | 必须与文件名一致 |
| 成员变量未赋值 | 有默认值,不会编译错误,但逻辑上可能输出 null |
| 方法体为空 | 定义了方法但未写代码,调用时什么都不做 |
Previous: 类和对象的概念
Next: 创建对象和对象的引用