类:用于将现实生活中的实体定义到编程环境中。
任何具有至少一个property 和一个对应的behaviour 的现实生活中的实体都可以被视为一个类。让我们举一个汽车的例子,它有一个属性accelerator,它可以帮助汽车移动并控制它的速度。对应的行为是acceleration,它与应用于加速器的推动成正比。
class Car {
private String tier;
private String tierFriction;
private double weight;
private double gasFedToEngine;
}
上面的类显示了 Car 的一些属性,它的加速度取决于这些属性。行为 (method in the class) 始终取决于属性 (global attribute(s) of the class)。现在,如果您想了解更多详细信息,可以将 Tier 定义为另一个实体,那么定义将如下所示
class Tier {
private String tierMaterial;
private String tierFriction;
private double weight;
private double tierDiameter;
}
class Car {
private Tier tier; // getting all properties of Tier here itself
private double weight;
private double gasFedToEngine;
}
对象:用于定义实体的各种风格并分别对它们执行数据操作。
现在我们已经为我们的程序定义了一个实体,比如说我们有一个二手车陈列室,有不同公司的汽车。所以每辆车都成为我们实体的object。对象可以是奥迪、日产、法拉利等。所以在打开陈列室后,我们像这样添加汽车
static List<Car> showroomCars = new ArrayList<Car>();
public boolean addCarToShowroom() {
Car carNissan = new Car(); // always creates a new objects and allocates some memory in heap
carNissan.setName("Nissan");
carNissan.setColor(RED);
carNissan.setWeight(300);
showroomCars.add(carNissan);
Car carAudi = new Car();
carAudi.setName("Audi");
carAudi.setColor(BLACK);
carAudi.setWeight(270);
showroomCars.add(carAudi);
}
因此,现在陈列室中添加了两款新车,一款是日产,另一款是奥迪,每款都有自己的特定属性值。
Class 只给出定义,在Object 上进行操作,对于任何类进行操作,都应该创建对象。每次为类创建一个对象时,其所有非静态(实例)变量都将以其各自的默认值加载到内存中。
引用:用于寻址对象
当我们说Car carAudi = new Car(); 时,我们为 Car 定义了一个新对象,并为该对象分配了一个内存位置。引用变量carAudi 保存了该对象的内存地址。用户永远不会直接访问对象,也不会直接访问它的内存位置。这就是引用变量的意义所在,它存储hexadecimal 格式的内存位置。如果我们想对对象进行修改,请不要直接借助引用。
一个对象可以有任意数量的引用,但一个引用一次只能指向一个对象。
class Car {
void test() {
Car car1 = new Car(); // (1)
Car car2 = new Car(); // (2)
car2 = car1;
/**
Says that car2 should point to where car1 points, so now both points to first object of Car
But for this car2 has to loose its current object-(2), making it an Abandoned object (An object with no active reference from the stack).
**/
}
}