단어 클래스 에서 온다 분류 ( 카테고리 뭔가가 투입되는 지금 우리는 모두가 들었습니다) 클래스는 청사진 유사하지만, 무엇이 정확히 의미? 즉, 클래스 가 특정 카테고리에 대한 설명을 보유하고 있음을 의미합니다. ( Java를 사용하여 예제로 Class, Object 및 Instance의 차이점을 보여주고 싶습니다. 읽는 동안 독자에게 스토리처럼 시각화하도록 요청합니다. 자바에 익숙하지 않다는 것은 중요하지 않습니다. ) 그럼 먼저 HumanBeing 이라는 카테고리 를 만들어서 자바 프로그램이 다음과 같이 표현할 것입니다.
class HumanBeing{
/*We will slowly build this category*/
}
이제 HumanBeing 은 일반적으로 어떤 속성을 가지고 있는지 Name , Age , Height , Weight 지금은 우리 자신을이 네 가지 속성으로 제한하고 카테고리에 추가하겠습니다.
class HumanBeing{
private String Name;
private int Age;
private float Height;
private float Weight;
/*We still need to add methods*/
}
이제 모든 범주에는 행동이 있습니다. 범주 Dog 에는 짖고, 가져오고, 구르는 행동 등이 있습니다 ..., 마찬가지로 우리 범주 HumanBeing 도 특정 행동을 가질 수 있습니다. 예를 들어 HumanBeing 에게 귀하의 이름 / 연령 / 체중 / 신장? 이름 / 연령 / 체중 / 높이를 제공해야하므로 자바에서는 다음과 같이합니다.
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);
object를 우리의 카테고리가 만들어집니다 힙 메모리 및 일부 주소가 할당되고, firstHuman
그 주소에 대한 참조를 보유하고, 지금이 개체입니다 HumanBeing의 객체 도 HumanBeing의 인스턴스 . 여기서는 객체와 인스턴스가 동의어 인 것 같습니다. 나는 동의어가 아닙니다.
우리의 이야기를 재개합시다, 우리는 우리의 firstHuman을 만들었습니다. 이제 우리는 그의 이름, 나이, 키, 몸무게를 물어볼 수 있습니다. 이것이 우리가 자바에서하는 방법입니다.
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());
...
...
}
}
우리가 처음 인간의 존재가 어떤 자격있는 우리의 첫번째 인간을 제공하여 이동 깃털을 할 수 있도록, 우리라는 범주가 필요하므로 그 의사가하게하자 의사를 그래서 자바에서 우리가 다음 할, 우리의 의사에게 몇 가지 동작을 제공
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*/
}
}
여기서 우리는 코드에서 재사용 성을 가져 오는 상속 개념을 사용했습니다 . 모든 의사는 항상 인간이 먼저이기 때문에 의사는 이름, 나이, 몸무게, 높이를 다시 작성하는 대신 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 범주 의 객체를 만드는 것입니다. 이미 알고 있듯이 객체는 힙 메모리에 생성됩니다. 와 firstDoctor
힙의 해당 개체에 대한 참조를 보유하고;
이 특정 개체 firstDoctor
는 다음과 같습니다 ( 개체 에 firstDoctor
대한 참조를 보유하고 있으며 개체 자체가 아닙니다)
firstDoctor
이다 의 객체class Doctor
그리고 (A)의 인스턴스class Doctor
firstDoctor
이다 의 아닌 개체class HumanBeing
그러나 의 인스턴스class HumanBeing
따라서 특정 개체는 특정 클래스의 인스턴스가 될 수 있지만 해당 클래스의 개체 일 필요는 없습니다.
결론:
객체는 특정 범주의 모든 특성을 충족하는 경우 특정 범주의 인스턴스라고합니다.
현실 세계의 예는 다음과 같을 것입니다. 우리는 인간으로 처음 태어 났으므로 우리를 인간의 대상으로 이미지합니다. 이제 우리는 성장할 때 책임을지고 새로운 기술을 배우고 삶의 예에서 다른 역할을 수행합니다. 아들, 형제, 딸, 아버지 , 어머니 이제 우리는 실제로 무엇입니까? 우리는 인간의 대상이지만 형제, 딸 등의 사례라고 말할 수 있습니다.
이게 도움이 되길 바란다
감사합니다