ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 클래스
    Java & Spring 2024. 6. 11. 15:52

    클래스는 객체를 생성하기 위한 틀이고, 인스턴스는 클래스를 토대로 생성된 실제 객체입니다.
    클래스는 속성과 동작을 정의하며, 인스턴스는 클래스의 정의에 따라 구체적인 데이터와 동작을 갖는 개별적인 객체입니다.

     

    예를 들어 Student 클래스를 정의

    pubilc class Student {
    	String name;
        int age;
        int grade;
     }

    class 키워드를 사용해 학생 클래스(Student)를 정의, 학생 클래스 내부에는 이름(name),나이(age),성적(grade) 변수를 가진다.

    이렇게 클래스에 정의한 변수들을 멤버 변수 또는 필드라고 한다.

    • 멤버 변수(Member Variable): 이 변수들은 특정 클래스에 소속된 멤버이기 때문에 이렇게 부른다.
    • 필드(Field): 데이터 항목을 가리키는 전통적인 용어이다. 데이터베이스, 엑셀 등에서 데이터 각각의 항목을 필드 라 한다.
    • 자바에서 멤버 변수, 필드는 같은 뜻이다. 클래스에 소속된 변수를 뜻한다.
     

    아래는 학생클래스를 사용하는 코드

     package class1;
     public class ClassStart {
         public static void main(String[] args) {
    Student student1; 
    student1 = new Student(); 
    student1.name = "학생1"; 
    student1.age = 15; 
    student1.grade = 90;
    
    Student student2 = new Student(); 
    student2.name = "학생2"; 
    student2.age = 16;
    student2.grade = 80;
    
    System.out.println("이름:" + student1.name + " 나이:" + student1.age + " 성 적:" + student1.grade);
    System.out.println("이름:" + student2.name + " 나이:" + student2.age + " 성 적:" + student2.grade);
    	
        } 
    }

     

    실행결과
    이름:학생1 나이:15 성적:90
    이름:학생2 나이:16 성적:80

     

    • 사용자가 직접 정의하는 사용자 정의 타입을 만들려면 설계도가 필요한데 이 설계도가 바로 클래스이다.
    • 설계도인 클래스를 사용해서 실제 메모리에 만들어진 실제를 객체 또는 인스턴스라고 한다.
    • 클래스를 통해서 사용자가 원하는 종류의 데이터 타입을 마음껏 정의할 수 있다.

    용어: 클래스, 객체, 인스턴스
    클래스는 설계도이고, 이 설계도를 기반으로 실제 메모리에 만들어진 실체를 객체 또는 인스턴스라 한다. 둘다 같은 의 미로 사용된다.
    여기서는 학생( `Student` ) 클래스를 기반으로 학생1( `student1` ), 학생2( `student2` ) 객체 또는 인스턴스를 만들었 다.

     

    클래스, 객체, 인스턴스 정리

    클래스 - Class
    클래스는 객체를 생성하기 위한 '' 또는 '설계도'이다. 클래스는 객체가 가져야 할 속성(변수)과 기능(메서드)를 정의한 다. 예를 들어 학생이라는 클래스는 속성으로 `name` , `age` , `grade` 를 가진다. 참고로 기능(메서드)은 뒤에서 설명한 다. 지금은 속성(변수)에 집중하자

     

    : 붕어빵 틀을 생각해보자. 붕어빵 틀은 붕어빵이 아니다! 이렇게 생긴 붕어빵이 나왔으면 좋겠다고 만드는 틀일 뿐이다. 실제 먹을 수 있는 것이 아니다. 실제 먹을 수 있는 팥 붕어빵을 객체 또는 인스턴스라 한다.
    설계도: 자동차 설계도를 생각해보자. 자동차 설계도는 자동차가 아니다! 설계도는 실제 존재하는 것이 아니라 개념으로만 있는 것이다. 설계도를 통해 생산한 실제 존재하는 흰색 테슬라 모델 Y 자동차를 객체 또는 인스턴스라 한다.

     

    객체 - Object
    객체는 클래스에서 정의한 속성과 기능을 가진 실체이다. 객체는 서로 독립적인 상태를 가진다.
    예를 들어 위 코드에서 `student1` 은 학생1의 속성을 가지는 객체이고, `student2` 는 학생2의 속성을 가지는 객체이 다. `student1` `student2` 는 같은 클래스에서 만들어졌지만, 서로 다른 객체이다.

     

    인스턴스 - Instance
    인스턴스는 특정 클래스로부터 생성된 객체를 의미한다. 그래서 객체와 인스턴스라는 용어는 자주 혼용된다. 인스턴스 는 주로 객체가 어떤 클래스에 속해 있는지 강조할 때 사용한다. 예를 들어서 `student1` 객체는 `Student` 클래스의 인스턴스다. 라고 표현한다.

     

    객체 vs 인스턴스
    둘다 클래스에서 나온 실체라는 의미에서 비슷하게 사용되지만, 용어상 인스턴스는 객체보다 좀 더 관계에 초점을 맞춘 단어이다. 보통 `student1` `Student` 의 객체이다. 라고 말하는 대신 `student1` `Student` 의 인스턴스이다. 라고 특정 클래스와의 관계를 명확히 할 때 인스턴스라는 용어를 주로 사용한다.
    좀 더 쉽게 풀어보자면, 모든 인스턴스는 객체이지만, 우리가 인스턴스라고 부르는 순간은 특정 클래스로부터 그 객체가 생성되었음을 강조하고 싶을 때이다. 예를 들어 `student1` 은 객체이지만, 이 객체가 `Student` 클래스로부터 생성되 다는 점을 명확히 하기 위해 `student1` `Student` 의 인스턴스라고 부른다.

Designed by Tistory.