特殊的数据类型:类 class
在基本数据类型中,我们可以使用特定的关键词来描述==单个==数据,比如一个整数,一个小数,或者一个字符串。那么如果我们想要描述一个更加复杂的个体该怎么办呢?比如我们想要在程序中描述一只猫或一只狗,或者一家商店?通常这种类型包含==多个需要描述的属性==。
Java
编程中可以把类class
当作一种特殊的数据类型来描述复杂的个体。
Pet Zone案例
考虑一个宠物管理系统,我们需要描述宠物的特性,比如小猫或者小狗。在这个简单案例里,我们只描述每只宠物的三个属性:名字、品种和年龄。
- Step 1. 为案例创建一个新的包
petzone
。 - Step 2. 创建描述一个描述猫的类。
Cat.java
package petzone;
public class Cat { //class当作一种特殊的数据类型,描述一个复杂的个体
public String name; // 第一个属性:名字
public String breed; // 第二个属性:品种
public int age; // 第三个属性:年龄
}
备注
- 上述
Cat
类中,属性name
和species
均为字符串类型,age
是整数类型;- 我们给
Cat
的每个属性添加了public
修饰符,使得其对项目中其他所有代码可见(可以使用)。
- Step 3. 依照相同的方式,创建一个Dog类用来描述小狗。
Dog.java
package petzone;
public class Dog {
public String name;
public String breed;
public int age;
}
我们可以看到,Dog类和Cat类非常相似,但现阶段我们只能这么做。后续当我们讨论完类的继承特性后,有更好的描述方式。
- Step 4. 创建一个PetManager类,用来管理Pets。这里我们只创建一些小猫小狗的个体(objects),并显示一些信息给客户。
PetManager.java
import petzone.Cat;
import petzone.Dog;
public class PetManager {
public static void main(String[] args){
// 创建第一只猫
Cat firstCat = new Cat();
firstCat.name = "Elie";
firstCat.breed = "British Shorthair";
firstCat.age = 3;
// 创建第二只猫
Cat secondCat = new Cat();
secondCat.name = "Gigi";
secondCat.breed = "Jungle";
secondCat.age = 5;
showCatInfo(firstCat); // 调用方法,打印firstCat的信息
showCatInfo(secondCat); // 调用方法,打印secondCat的信息
Dog firstDog = new Dog();
firstDog.name = "June";
firstDog.breed = "Husky";
firstDog.age = 8;
showDogInfo(firstDog);
}
/*
* 定义一个方法显示Cat信息,需要传入一个cat,告知方法显示哪只猫的信息
* 方法执行完后不需要返还任何数据,因此返回类型是void
* static修饰符使得该方法可以被main方法(也是一个static方法)调用
*/
static void showCatInfo(Cat cat) {
System.out.print("Cat: " + cat.name + '\t');
System.out.print("species: " + cat.breed + '\t');
System.out.println("age: " + cat.age);
}
/*
* 同理创建一个类似的方法,显示小狗的信息
*/
static void showDogInfo(Dog dog) {
System.out.print("Dog: " + dog.name + '\t');
System.out.print("species: " + dog.breed + '\t');
System.out.println("age: " + dog.age);
}
}