Wanna be Brilliant Full-Stack Developer
Java 객체지향 프로그래밍 이해 클레스와 오브젝트와 인스턴스 #6 본문
클래스는 신이 가지고 있는 설계도이다.
신이 설계도를 가지고 있을때 강아지 , 사람 설계도를 가지고 있으면
이 세상에는 강아지가 한마리만 있는것이 아니라 강아지가 다 종류가 다르다.
종류가 다르니까 상태에 대한 초기화가 안되어 있다.
선언만 되어있을것이다. 이 세상에 new해서 뿌리를 내리는것이다
그떄 각자 다양성을 유지하기 위해서 중간에 생성자가 다 필요하다.
세상에 뿌리가 내려져셔 토토라는 강아지도 있고 , 레르코라는 강아지도 있고
그리고 장보고, 임꺽정, 홍길동도 만들어졌다.
그러면 실제 heap공간으로 보면 5개의 heap이 있는것이다.
토토, 레르코. 장보고, 임꺽정, 홍길동 자리가 있다.
각자의 자리에는 상태, 필드 값을 가지고 있을것이다.
클래스라는 설계도를 통해서 다양하게 만들어 낼 수 있다!
우리는 클래스가 무엇인지 알았다. 클래스는 설계도이다.
그러면 인서턴스는 무엇인가?
이렇게 heap공간에 뜬 것들을 인스턴스라고 한다. 클래스를 New를 하면 실제 세상에 존재 하게 된다. 존재 하게 된다는것은 heap공간에 올라왔다는 것이다.클래스는 파일이다 .java 파일이라는것! 설계도이다!
Heap공간에 올라온것 new를 통해서 메모리에 떳다는것을 인스턴스라고 한다!
마지막으로 오브젝트를 구분해야한다 오브젝트는 무엇인가?
우리가 어떤 구체적인것이 있다고 해보자
구체적인 것을 영어에서는 셀 수 있는것이라 한다. 다르게 이야기하면 물질 명사라고 한다.
구체적인것들은 무엇이 있을 수 있는가? 의자! 침대! 탁자 책상 장농
이런것들은 아주 구체적인 것들이다.
이런 구체적인것들을 우리가 부를때 한번에 구체적인것들을 하나의 이름으로 부르고 싶을떄가 있다.
하나의 이름으로 부르고 싶을때 애네들을 가구라고 한다.
그러면 이 밑에 있는것들은 구체적인 것들이지만 가구 라는것은 아주 추상적인것이다.
이거는 셀 수 없는것이다. 영어에서는 추상명사라고한다!
두가지로 나뉘어져있다. 영어에서는 셀수있는것과 셀수없는것으로 나뉘어진다.
셀수 있는것은 실제 세상이 있을떄 집이 있다.
집에 내가 의자만 둘 수 있다. 이것이 가능하다.
근데 어떤 집에 가구를 둘수는 없다. 이거는 말이 안된다.
가구는 실제로 존재하는것이 아니기 떄문에!
존재할 수 없는 가구는 이 세상에 뿌리 내릴 수 없다.
의자는 Java에서 신이 의자라는 클래스를 만들었다.
New를 해서 존재하게 할 수 있다.하지만 반대로 가구라는 클래스가 있는데 가구라는 클래스는 New를 할 수 없다. 왜냐하면 존재 할 수 없기 떄문이다. 그러면 이렇게 어떤 클래스를 볼때 의자라는 클래스가 있고 가구라는 클래스가 있는데이것이 둘다 클래스이다. 의자라는 클래스가 존재할수 있는 가능성이 있는 애고 가구는 존재할 수있는 가능성이 없다.
가구는 그냥 클래스일 뿐인데 의자는 오브젝트라고 부를 수 있다. 의자 클래스는 이 세상에 존재할 가능성이 있으니까 존재할 수도 있으니까 오브젝트!New된 의자! 를 인스턴스라고 한다 메모리에 뜨면 인스턴스라고 한다의자는 설계도니까 클래스가 될 수 있다.
인스턴스가 될 수 있으면 오브젝트!
인스턴스가 될 수 없으면 오브젝트라고 말할 수 없다.
그러면 세가지를 구분할 수 있는가?
클래스는 설계도!
오브젝트는 new가 되지 않았지만 가능한것들
인스턴스는 new가 된것!
'Some Memos > Java' 카테고리의 다른 글
Java 객체지향프로그래밍의 이해 상속과 콤포지션 (0) | 2023.02.10 |
---|---|
Java 객체지향 프로그래밍 이해 클래스의 상태와 행위 (0) | 2023.02.10 |
Java 객체지향 프로그래밍 문법 클래스만들기(This) #5 (0) | 2022.03.03 |
Java 자바 객체지향 프로그래밍 문법 #4 #생성자 (0) | 2022.03.02 |
3/2 Java 객체지향프로그래밍 문법 #3 # 클래스 (0) | 2022.03.02 |