
1.Class
(1) 정의
자동차 공장을 예시로 들면, Class는 하나의 자동차 설계도 이다.
우리는 설계도를 통해 진짜 자동차를 만든다.
차 설계도에는 필요한 부품과 이 차의 작동원리들이 적혀있다.
여기서 차 설계에 필요한 부품들을 Class 내의 변수, 차의 작동 원리를 Class 내의 Method라고 한다.
public class vehicle_Blueprint {
	
    //인스턴스 변수
    int 볼트의_수;
    int 너트의_수;
    String 배기통;
    string 차체;
    String 차색깔;
    String 앞범퍼의_크기;
    String 차 시리얼 넘버;
    
    //클래스 변수
    Static String 차체의_수입원 = "국산";
    
    //인스턴스 매소드
    void Black_Box_alert (int speed, int 주행거리) {
    	System.out.println("해당 차의 주행거리가 " + 주행거리 + 
        "일 때 그리고 속도가 " + speed +  "일 때 알림이 갑니다." );
    }
    
    
    //클래스 매소드
    static String 후륜구동(){
    	return "A회사의 모든 자동차는 후륜구동입니다.";
    } 
    
   String 깜박이_작동원리(String 핸들의_이동방향){
   	if(핸들의_이동방향 == "left")
    	return "왼쪽 깜빡이";
   }
   else if(핸들의_이동방향 == "right"){
   		return "오른쪽 깜빡이";
   }
   
   else
   {
   		return "깜박이에 오류가 생겼습니다.";
   }
}
(2)Class의 구성요소
a. 인스턴스 변수
클래스를 구현한 객체(인스턴스)마다 다르게 쓰일 수 있는 변수이다.
해당 예시에서 볼트의 수, 너트의 수, 시리얼 넘버 등등은 차 마다 다를 것이다.
b. 클래스 변수
해당 클래스를 사용한 모든 객체가 동일하게 써야하는 변수이다.
객체마다 임의로 값을 조정할 수 없다.
해당 예시에서 차체의 수입원은 아반떼이든, 펠리세이드 이든 모두 무조건 국산만 써야한다.
c. 인스턴스 매소드
해당 클래스를 사용한 객체마다 다르게 쓰일 수 있는 매소드이다. (== 재정의가 가능하다.)
클래스 변수를 해당 매소드에서 재조정할 수 없다.
해당 매소드에서 블랙박스 알림이 가는 주기는 차마다 다르다.
d. 클래스 매소드
input으로 받은 값 외에는 클래스 변수만 사용할 수 있다.
인스턴스 매소드는 값이 정해져 있지 않으므로 고정불변 해야하는 클래스 매소드에서는 사용불가 이다.
해당 예시에서는 해당 A사의 모든 자동차는 후륜구동하고, 깜빡이 작동원리는 모두 같다. 이는 바꿀 수 없다.
2.객체 = instance
(1)정의
Class가 차 설계도라면 객체는 해당 설계도로 만든 아반떼이다.
Class가 구현화 된 것을 객체라고 한다.
(2)생성 및 초기화
//객체 생성
Vehicle_Blueprint Avante = new Vehicle_Blueprint();
//객체 초기화
Avante.볼트의_수 = 15642;
Avante.너트의_수 = 15509;
//...
Avante.차색깔 = "Black";
Avante.시리얼넘버 = "AE013153";
(3)생성자를 이용한 자동 초기화
a.생성자란?
클래스 생성 시 자동으로 생성되는 클래스의 규격, 개발자는 이를 이용하여 객체를 자동 초기화 시킨다.
Vehicle_Blueprint(int 객체_볼트수, int 객체_너트의수,...,String 객체_차색깔, String 객체_시리얼 넘버){
this.볼트의_수 = 객체_볼트수;
this.너트의_수 = 객체_너트수;
//....
this.차색깔 = 객체_차색깔;
this.시리얼넘버 = 객체_시리얼넘버;
}
b.생성자를 이용한 초기화 예시
vehicle_Blueprint Avante = new vehicle_Blueprint(15555, 15555, "Black", "AE104205");
** This란?
지금 클래스를 호출한 객체를 지칭
위의 예시에서 this.차색깔은 Avante.차색깔을 의미