위 내용들을 한번에 정리하려고 욕심내니 힘들어서

class에 관해서는 정리해야할 내용이 많은 것 같아 나눠서 포스팅하려고 합니다.

 

자바에서 class(이하 클래스)는 프로그램의 최소단위라고 할 수 있습니다다.

클래스는 하나의 패키지 안에서는 중복해서 이름을 지을 수 없죠.

그리고 생성자(Constructor)(이하 생성자)는 클래스의 이름과 같다는 특징을 가지고 있는데,

class clothes{
    private int shorts;
    private int longs;
    private [] int closet;
	
    // 디폴트 생성자의 모습입니다. 
    clothes(){
    	// 두 변수를 담아줄 옷장을 배열화했습니다.
    	closet = new int[2]
    }
	
    // int형인 shorts와 longs를 매개변수로 받는 경우를 오버로딩했습니다.
    clothes(int shorts, int longs){ 
    	// this의 첫번째 사용법입니다. 
        // 생성자 혹은 메서드(결국 생성자도 메서드이긴합니다만) 맨 위에 this() 형식으로
        // this에서 하는 역할을 중복해서 쓸 수고를 덜 수 있습니다.
        // 매개변수를 받지 않는 디폴트 생성자를 호출한 모습입니다. closet를 초기화합니다.
        this();
        this.shorts = shorts;
        this.longs = longs;
    }
    void prn( /* clothes this */){
        System.out.println("반팔티는" + this.shorts + "개, 긴팔티는" + this.longs + "개 있군요");
    }
    public void init(int shorts, int longs) {
    	// this의 두번째 사용법입니다.
        // 클래스에서 선언한 멤버 변수 자체를 지칭할 때 사용합니다.
        this.shorts = shorts;
        this.longs = longs;		
    }
    public clothes add(clothes c) {  // this<-c1   매개변수 c<-c2
        // c1과 c2더해서 새로운 객체에 저장하고 리턴
        clothes temp = new clothes();
        temp.shorts = this.shorts + c.shorts;
        temp.longs = this.longs + c.longs;
        return temp;
    }
    public clothes subtract(clothes c) {
        clothes temp = new clothes();
        temp.shorts = this.shorts - c.shorts;
        temp.longs = this.longs - c.longs;
        return temp;
    }
}

위의 예시에서 생성자의 간단한 모습과 this의 사용법을 알아보았습니다.

보통 this는 레퍼런스변수, 참조변수의 역할을 하며

this() 의 경우는 조금 분류가 달라집니다만 오버로딩된 자기 자신을 호출한다는 점에서 같이 알아보았습니다.

this 변수는 따로 기술하지 않은 숨어있는 변수라는 특징도 가지고 있으며

this 에는 현재 메서드를 호출한 객체의 참조변수값이 전달되어 저장됩니다.

+ Recent posts