“ 类别”一词来自“ 分类”(将类别放入其中的“ 类别”),现在我们都听说“ 类别”就像一个蓝图,但这到底是什么意思?这意味着该类具有特定类别的描述,(我想用Java来举例说明类,对象和实例之间的区别,并且我会要求读者在阅读它时像一个故事一样对其进行可视化,如果您不熟悉Java没关系)因此让我们首先创建一个名为HumanBeing的类别,这样Java程序将如下表示。
class HumanBeing{
/*We will slowly build this category*/
}
现在,HumanBeing一般具有名称,年龄,身高,体重的哪些属性,现在让我们将自身限制为这四个属性,然后将其添加到类别中
class HumanBeing{
private String Name;
private int Age;
private float Height;
private float Weight;
/*We still need to add methods*/
}
现在,每个类别都有一个行为,例如类别Dog的行为是吠叫,抓取,滚动等。类似地,我们的类别HumanBeing也可以具有某些行为,例如,当我们问问HumanBeing时,您的名字/年龄/体重/高度?它应该给我们它的名字/年龄/体重/身高,所以在java中我们这样做
class HumanBeing{
private String Name;
private int Age;
private float Height;
private float Weight;
public HumanBeing(String Name,int Age,float Height,float Weight){
this.Name = Name;
this.Age = Age;
this.Height = Height;
this.Weight = Weight;
}
public String getName(){
return this.Name;
}
public int getAge(){
return this.age;
}
public float getHeight(){
return this.Height;
}
public float getWeight(){
return this.Weight;
}
}
现在,我们将行为添加到了HumanBeing类别中,因此我们可以询问其名称,年龄,身高,体重,但是您可以从谁那里询问这些详细信息,因为class HumanBeing这只是一个类别,它是一个蓝图,例如,建筑师为他要建造的建筑物的文件,现在我们不能继续在蓝图(对建筑物的描述)中居住,我们只能在建筑物建成后居住在建筑物中,所以在这里我们需要从我们的类别中创建人类上面已经描述过了,那么我们该如何在Java中做到这一点呢?
class Birth{
public static void main(String [] args){
HumanBeing firstHuman = new HumanBeing("Adam",25,6.2,90);
}
}
现在,在上面的示例中,我们创建了第一个名称为age height weight的人,那么上面的代码中到底发生了什么?。我们正在实例化类别HumanBeing,即创建了该类的对象
注意: 对象和实例不是同义词在某些情况下,似乎对象和实例是同义词,但它们不是同义词,我会给出两种情况
情况1:对象和实例似乎是同义词。
让我详细说明一下,当我们说在堆内存上创建了该类别HumanBeing firstHuman = new HumanBeing("Adam",25,6.2,90); 的对象并为其分配了一些地址,并持有对该地址的引用时,现在该对象为人的对象也是人的实例。在这里,似乎对象和实例是同义词,我再说一遍,它们不是同义词firstHuman
让我们恢复我们的故事,我们创建了第一个人类,现在我们可以问他的名字,年龄,身高,体重,这就是我们在Java中的做法
class Birth{
public static void main(String [] args){
HumanBeing firstHuman = new HumanBeing("Adam",25,6.2,90);
System.out.println(firstHuman.getName());
System.out.println(firstHuman.getAge());
...
...
}
}
因此,我们拥有第一个人类,并通过赋予我们的第一个人类一定的资格来让自己动弹,让我们让他成为医生,因此我们需要一个名为Doctor的类别并赋予Doctor一些行为,因此在Java中,我们可以这样做
class Doctor extends HumanBeing{
public Doctor(String Name,int Age,float Height,float Weight){
super(Name,Age,Height,Weight);
}
public void doOperation(){
/* Do some Operation*/
}
public void doConsultation(){
/* Do so Consultation*/
}
}
在这里,我们使用了继承的概念,它在代码中带来了一定的可重用性,每个Doctor永远都是HumanBeing的第一人,因此Doctor的Name,Age,Weight,Height将从HumanBeing继承而来,而无需再次编写,请注意,我们只是写了一份尚未创建医生的说明,所以让我们在我们的医生中创建一名医生。class Birth
class Birth{
public static void main(String [] args){
Doctor firstDoctor = new Doctor("Strange",40,6,80);
.......
.......
/*Assume some method calls , use of behaviour*/
.......
.......
}
}
情况2:对象和实例不是同义词
在上面的代码中,我们可以直观地看到我们正在实例化Doctor类并将其变为现实,即我们只是创建了Doctor类的Object,因为我们已经知道Object是在堆内存上创建的并firstDoctor在堆上保存对该Object的引用;
这个特定的对象firstDoctor如下(请注意firstDoctor,它持有对该对象的引用,它不是对象本身)
firstDoctor是A的对象class Doctor和A的实例class Doctor
firstDoctor是不是一个对象class HumanBeing,但实例class HumanBeing
因此,特定对象可以是特定类的实例,但不必是该给定类的对象
结论:
如果对象满足特定类别的所有特征,则称该对象为该特定类别的实例。
现实世界的例子如下,我们最初是人类,因此将我们形象化为人类的对象,现在,当我们长大后,我们承担起责任,学习新技能,并在人生中扮演不同的角色。儿子,兄弟,女儿,父亲,母亲现在我们到底是什么?我们可以说我们是人类的对象,但兄弟,女儿等的实例
我希望这有帮助
谢谢