类简介
本节课介绍了Java中类的基础知识——什么是类以及如何定义类。
定义
类是使用面向对象方法构建程序的基本单元。对象具有某些相似的特征——状态和行为。这种共性通过一个蓝图或模板来提供,用于创建所有相似对象的实例。这个蓝图被称为类。
类的主体
1class className { 2 int integer_one; 3 String string_one; 4}
关键字 class 用于每个类的声明,后跟类名。你可以随意命名类名。
基础要素
Java 中的每个类都可以由以下元素组成:
-
字段、成员变量或实例变量:这些是存储特定对象数据的变量。每个类的对象都拥有自己的一份字段。
-
成员方法或实例方法:这些方法对对象执行操作,并在类内部定义。
-
静态字段或类字段:这些字段属于整个类,所有该类的对象共享同一个值。无论类中有多少个对象,这类字段在整个类中只存在一份。
-
静态方法或类方法:这些方法不作用于某个特定对象,而是与类本身相关联。
-
内部类:当一个类被定义在另一个类内部,且它是后者的一个子集时,这个嵌套的类称为内部类。
了解了类的基本概念后,我们来看一个具体的类示例,以更好地理解这些内容。
宠物类示例
1class Pet { 2 private static int newID; 3 private int petID; 4 private String petType; 5 private String petName; 6 private int petAge; 7 8 public Pet(String type, String name, int age) { 9 petType = type; 10 petID = newID; 11 petName = name; 12 petAge = age; 13 newID = newID + 1; 14 } 15 16 public String getName() { 17 return petName; 18 } 19 20 public static int getNewID() { 21 return newID; 22 } 23 24 public void printPetDetails() { 25 System.out.println("Pet ID: " + petID); 26 System.out.println("Pet Type: " + petType); 27 System.out.println("Pet Name: " + petName); 28 System.out.println("Pet Age: " + petAge); 29 } 30} 31 32class PetList { 33 public static void main(String[] args) { 34 Pet myDog = new Pet("dog", "Ruffy", 3); 35 myDog.printPetDetails(); 36 37 Pet newcat = new Pet("cat", "Princess", 2); 38 newcat.printPetDetails(); 39 } 40}
解释
本例中我们定义了一个 Pet 类。该类包含五个变量:
petType:表示宠物的具体种类(如狗、猫等)。petID:为每只宠物分配的唯一编号。petName:宠物的名字。petAge:宠物的年龄(整数类型)。newID:这是一个静态变量,因此无论创建多少个宠物对象,该字段在整个类中仅存在一份。
例如,一只名叫“Ruffy”的狗,或一只名叫“Princess”的猫,都是该类的一个实例(即对象)。因此,我们可以创建多个类的实例,就像现实中可以有多个宠物一样。
类中定义的属性(即变量)就像是每个 Pet 类型对象的内部变量。
要声明类的对象,应遵循第38行和第41行的格式。
我们使用点号(.)操作符来访问对象的成员。在上述示例中,第39行和第41行调用了方法。
私有成员
如上所示,我们在声明类变量时使用了 private 关键字。私有成员只能在成员方法的定义内部被访问。如果程序试图直接访问 private 成员,将导致编译错误。
注意:私有成员可以是变量,也可以是方法。
尝试运行下面的代码,它在编译时会报错,因为代码中直接访问了类的私有成员。
1class Pet { 2 private String petName; 3 private String petType; 4 5 public Pet() {}; 6} 7 8class PetList { 9 public static void main(String[] args) { 10 Pet myDog = new Pet(); 11 System.out.println(myDog.petType); 12 } 13}
但在同一类中,代码可以访问私有成员。请看以下示例:
1class Pet { 2 private String petName; 3 private String petType; 4 5 public Pet() {}; 6 7 public static void main(String[] args) { 8 Pet myDog = new Pet(); 9 System.out.println(myDog.petType); 10 } 11}
方法可以通过与局部变量相同的语法引用类的私有变量。
公有成员
关键字 public 用于标识类中可以从类外部访问的成员。观察 Pet 类中的方法,在 main() 方法中调用它们时没有出现任何编译错误,正是因为它们是公有的。