Archives
Recent Posts
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
관리 메뉴

개발도생's Blog

클래스(Class), 객체(Object), 인스턴스(Instance) 본문

Java/Class

클래스(Class), 객체(Object), 인스턴스(Instance)

개발도생 2022. 12. 20. 19:53

"기본 개념"에 대한 공부를 하다가 정리해두면 좋을 것 같았다.

 

먼저 클래스와 객체, 인스턴스를 알기 전 객체 지향의 개념을 훑고 넘어가는 것이 좋을 듯하다.


객체 지향 언어란

컴퓨터 프로그래밍의 패러다임 중 하나다. 객체 지향 언어는 현실 세상에서 우리가 관찰할 수 있는 모든 것들은 "속성""기능"을 가지고 있고, 상호 작용한다. 이런 개념들을 프로그램에 적용시켜 독립된 각각의 객체들을 생성하고 상호 작용할 수 있게 하는 것을 "객체 지향 언어"라 할 수 있다.

 

이해를 돕기 위해 예를 들자면, 부품이 모두 연결되고 조립됐을 때 컴퓨터가 정상적으로 작동된다. 컴퓨터의 수많은 부품들을 "객체"라고 이해하면 된다. 각각의 부품들마다 역할이 다르고 고장이 난다면 해당 부품만 수리하던지 교체를 해주면 된다. 이와 같이 객체 지향 언어유지 보수가 편리한 장점이 있다.

 

객체 지향 언어에 대해서는 설명할 내용들이 많기 때문에 공부를 조금 더 해서 따로 정리해야겠다.


클래스(Class)란

  • 객체를 만들어 내기 위한 설계도 혹은 로 설명할 수 있다.
    • Class에 대해서 설명할 때 보다 쉬운 이해를 돕기 위해 붕어빵 틀클래스와 같다고 한다.
  • Class 내부에는 생성자, 객체의 필드(변수)와 객체가 어떤 행동을 할 건지 보여줄 수 있는 메서드(Method)로 구분된다.
  • Class는 객체 지향 프로그래밍의 추상화 개념을 구현한 것이다.
// Class의 기본 형태
public class ClassName {
     
}

접근 제어자

  • 접근 제어자는 클래스 또는 멤버 변수를 외부에서 접근하지 못하도록 제한하는 역할을 한다.
    1. private : 같은 클래스 내에서만 접근 가능
    2. default : 같은 패키지 내에서만 접근 가능
    3. protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근 가능
    4. public : 접근 제한 없음
  • 접근 범위 : private < default < protected < public 순으로 보다 많은 접근을 허용

객체(Object)란

  • 속성과 기능들을 묶은 프로그램 단위를 뜻한다.
    • 이해를 돕기 위해 설명을 보태자면, 사람이라는 객체는 이름, 나이, 성별 등과 같은 "속성"과 먹다, 걷다, 자다 등의 "기능"을 가진다.
    • 자바(Java)에서는 속성들을 필드(Field), 기능을 메서드(Method)라고 한다.
public class ClassName {
     public static void main(String[] args) {
		
        // ClassTest Class의 test 객체 생성
        ClassTest test;
        
        ClassTest test = new ClassTest();
        
        // Method 사용
        test.method();

    }
}
  • 객체는 모든 인스턴스를 대표하는 포괄적인 의미를 가지고 있다.
  • 현재 객체(test)는 선언은 되어 있지만 구체적인 실체를 가지고 있지 않은 상태다.(메모리 할당 X)


인스턴스(Instance)란

  • 설계도를 바탕으로 소프트웨어 세계에 구체적으로 구현된 실체
    • 객체가 소프트웨어에 실체화가 됐을 때 '인스턴스'라고 한다.
    • 실체화된 인스턴스만이 메모리에 할당이 된다.
  • 인스턴스는 객체에 포함이 된다.
  • 객체 지향의 관점에서 객체가 메모리에 할당되어 사용이 될 때만 '인스턴스'라고 한다.
public class ClassName {
     public static void main(String[] args) {
		
        // ClassTest Class의 test 객체 생성
        ClassTest test;
        
        // 인스턴스화
       	test = new ClassTest(); 
        /*
         * test는 ClassTest Class의 '인스턴스'
         * 객체를 메모리에 할당
         */
        
        // Method 사용
        test.method();

    }
}
  • 정리하자면 클래스 타입으로 선언됐을 때 '객체'라고 하고, 해당 객체가 메모리에 할당되어 실제로 사용될 때 '인스턴스'라고 한다.

클래스와 객체, 인스턴스는 따로 각각 공부를 해서 개별적으로 정리해서 글을 작성해보겠습니다.

 

혹시나 더 많은 정보를 공유해주실 수 있거나, 해당 내용에 중요한 내용이 빠져있다면 댓글로 공유해주시면 감사하겠습니다.

 

더 깊이 공부해서 보다 좋은 내용과 유익한 정보를 제공할 수 있도록 하겠습니다!

'Java > Class' 카테고리의 다른 글

[Java][Class] String  (0) 2023.04.07
[Java][Class] Random  (0) 2023.03.20
[Java][Class] BufferedWriter  (0) 2022.12.15
[Java][Class] StringBuilder  (0) 2022.12.09
[Java][Class] StringTokenizer  (0) 2022.12.02
Comments