2020.12.19 (토)

클래스 정의하는 방법

  • 클래스란 '객체를 정의해 놓은 것' 또는 클래스는 '객체의 설계도'이라고 정의 할 수 있다.
class TV {
	String color; //색깔
    boolean power; //전원상태
    int channel; //채널
    
    void power();
    void channelUp() { channel++; };
}
  • 맴버변수와 메서드를 선언하는데 있어서 순서는 관계없지만, 일반적으로 메서드보다는 멤버변수를 먼저 선언하고 맴버변수는 맴버변수끼리 메서드는 메서드끼리 모아 놓는 것이 일반적이다.

객체 만드는 방법 (new 키워드 이해하기)

클래스명 변수명; // 클래스의 객체르를 참조하기 위한 참조 변수를 선언
변수명 = new 클래스명(); // 클래스의 객체를 생성 후, 객체의 주소를 참조변수에 저장
Tv t; // tv클래스 타입의 참조 변수 t를 선언
t = new Tv(); // new 생성자를 통해 인스턴트를 생성 후 t에 저장
  • 연산자 new에 의해 Tv클래스의 인스턴ㅌ스가 메모리의 빈 공간에 생성된다. 이 때 맴버 변수는 각 자료형에 해당하는 기본값으로 초기화 된다.

메소드 정의하는 방법

  • 메서드는 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것이다.

메서드를 사용하는 이유

  1. 높은 재사용성
  2. 중복된 코드의 제거
  3. 프로그램의 구조화

메서드는 크게 두 부분 선언부와 구현부로 이루어져 있다.

반환타입 메서드이름 (타입 변수명, 타입변수명 ...) 선언부
{
메서드 호출시 수행 될 코드
}

생성자 정의하는 방법

  • 생성자는 인스턴스가 생성 될 때 호출 되는 '인스턴스 초기화 메서드'이다. 따라서 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용된다. 생성자도 오버로딩이 가능하므로 하나의 클래스에 여러개의 생성자가 존재 할 수 있다.

생성자의 이름은 클래스의 이름과 같아야 한다.
생성자는 리턴값이 없다.

클래스 이름(타입 변수명, 타입 변수명, ...) {
// 인스턴스 생성 시 수행 될 코드
// 주로 인스턴스 변수의 초기화 코드를 적는다.
}

class Card {
	card() { //매개변수가 없는 생성자
  		...
        }
        Card (String k, int num) { //매개 변수가 있는 생성자
        }
   		
    	

생성자 new가 인스턴스를 생성하는 것이지 생성자가 인스턴스를 생성 하는 것이 아니다. 생성자는 단순히 인스턴스 변수들의 초기화에 사용되는 메서드일 뿐이다.

클래스에 생성자를 정의하지 않고도 인스턴스를 생성할 수 있었던 이유는 컴파일러가 제공하는 기본 생성자를 사용 했기 때문이다. 클래스에 정의된 생성자가 하나라도 있으면 컴파일러에 의해 기본 생성자는 추가되지 않는다.

this 키워드 이해하기

  • 같은 클래스 맴버들 간에 서로 호줄할 수 있는 것처럼 생성자 간에도 서로 호출이 가능하다.

생성자의 이름으로 클래스이름 대신 this를 사용한다.
한 생성자에서 다른 생성자를 호출 할 때는 반드시 첫 줄에서만 호출이 가능하다.

car(String color) {
	door = 5; //  첫번째 줄
    Car(color, "auto", 4); // 생서앚의 두번째 줄에서 다른 생성자를 호출해서 에러
}    			// this(color, "auto", 4); this를 사용해야한다.

this는 참조변수로 인스턴스 자신을 가리킨다. 참조변수를 통해 인스턴스의 맴버에 접근할 수 있는 것처럼 'this'를 사용 할 수 있는 것은 인스턴스 맴버뿐이다. static메서드는 인스턴스를 생성하지 않아도 호출 될 수 있기 때문이다.

this 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어 있다.
this(), this(매개변수) 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용한다.

좋은 웹페이지 즐겨찾기