ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 클래스와 인스턴스
    우아한테크코스/Level1 - 강의 2022. 2. 15. 14:00

    오늘은 클래스와 인스턴스, 그리고 static을 이용해 만드는 클래스 메서드/변수와 인스턴스 메서드/변수의 차이점에 대해서 배웠다.

     

    우선 클래스와 인스턴스에 대해 이야기해 보자. 클래스와 인스턴스는 종종 붕어빵틀과 붕어빵으로 비유된다. 붕어빵틀을 이용해 팥, 슈크림, 피자맛 붕어빵을 만들어 내는 것처럼 우리는 클래스라는 틀을 이용해 서로 다른 상태를 가지는 인스턴스를 만들어 낼 수 있다.

    아래와 같이 자동차라는 클래스가 있다면, 우리는 서로 다른 이름을 가지는 여러가지 자동차 인스턴스를 만들 수 있는 것이다!

    public class Car {
    	private String name;
        
        public Car(String name) {
    		this.name = name;
        }
        
        public String getName() {
        	return name;	
        }
    }

     

     

    이름 뿐만이 아니라 차의 번호, 제조사, 생산년도와 같이 모든 차들은 서로 다른 상태(state)를 가지고 있다. 우리는 서로 다른 상태를 가지는 자동차를 표현하기 위해 인스턴스를 이용한다!

    이런 서로다른 상태를 표현하고 변경/조회하는데 사용되는 변수/메서드를 우리는 인스턴스 변수/메서드라고 한다.

     

     

     

    그렇다면 클래스 변수/메서드는 무엇일까?

    상태가 변하지 않는 특성을 가진 유틸리티와 관련된 기능들을 사용하기 위해 매번 인스턴스를 생성하는 것은 번거로운 일이다.

    인스턴스를 생성하지 않고 이런 기능들을 이용하기 위해 사용되는 것이 클래스 변수/메서드 이다.

    public class RandomGenerator {
    
       private static final int MAX_RANDOM_NUMBER = 10;
       
       private RandomGenerator() {}
    
        public static int generateRandomNumber() {
            Random random = new Random();
            return random.nextInt(MAX_RANDOM_NUMBER);
        }
    }

    위의 코드는 "자동차경주"를 구현하며 사용한 랜덤숫자생성기 이다. 자동차경주에서 랜덤숫자생성기의 상태는 변할 일이 없다.

    이럴때 static예약어를 사용하면 인스턴스 생성없이 generateRandomNumber라는 기능을 사용할 수 있다!

    또한 모든 메서드가 클래스 메서드일 경우, private 생성자를 추가해 명시적으로 클래스를 생성할 수 없도록 하는것이 좋다고 한다!

     

     

    댓글

Designed by Tistory.