자바의 Class에 대해 학습하세요.
학습할 것
클래스 정의하는 방법
객체 만드는 방법 (new 키워드 이해하기)
메소드 정의하는 방법
생성자 정의하는 방법
this 키워드 이해하기
클래스란(class)란. 객체 지향 프로그래밍의 추상화 (abstraction) 라는 개념을 직접 구현한 것이다.
자바에서는 개발자의 편의를 위해 유용하게 사용할 수 있는 많은 수의 클래스를 미리 정의하여 제공하고 있다.
또한, 개발자가 원하는 동작을 하는 새로운 클래스 또한 손쉽게 작성이 가능하다.
자바에서 클래스를 선언하는 방법은 접근 제어자와 함께 class 키워드를 사용하면 된다
예제)
접근제어자 class 클래스이름 {
접근제어자 필드1의타입 필드1의이름;
접근제어자 필드2의타입 필드2의이름;
...
접근제어자 메소드1의 원형
접근제어자 메소드2의 원형
...
};
public class Person{
private String name;
private int age;
public void eat(){ // <- 클래스 메소드
}
}
위와 같이 선언된 클래스의 정의를 가지고 다음과 같은 순서대로 Person 객체의 인스턴스를 생성할 수 있다.
우선 객체를 참조하기 위한 참조 변수를 선언한다.
// 선언
// 클래스이름 객체참조변수이름;
// 예제
Person me;
// 그 후에 new 키워드를 사용하여 인스턴스를 생성하고, 해당 인스턴스의 주소를 미리 선언한 참조 변수에 저장하여 사용한다.
// 선언
// 객체참조변수이름 = new클래스이름();
// 예제
me = new Person();
// 또한, 다음과 같이 참조 변수의 선언과 인스턴스의 생성을 동시에 할 수도 있다.
// 선언
// 클래스이름 객체참조변수이름 = new 클래스이름();
Person me = new Person();
자바에서 클래스는 멤버(member)로 속성을 표현하는 필드(field)와 기능을 표현하는 메소드(method)를 가진다
그중에서 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있다.
접근제어자 반환타입 메소드이름(매개변수목록) { // 선언부
// 구현부
}
public static void hiSunghoon(){ < -클래스 메소드
}
접근 제어자 : 해당 메소드에 접근할 수 있는 범위를 명시함
반환 타입(return type) : 메소드가 모든 작업을 마치고 반환하는 데이터의 타입을 명시함
메소드 이름 : 메소드를 호출하기 위한 이름을 명시함
매개변수 목록(parameters) : 메소드 호출 시에 전달되는 인수의 값을 저장할 변수들을 명시함
구현부 : 메소드의 고유 기능을 수행하는 명령문의 집합
접근 제어자는 객체 지향 프로그래밍의 특징 중 하나인 정보 은닉(data hiding)을 위한 키워드이다.
public 멤버는 모든 객체에서 접근할 수 있지만, private 멤버는 해당 객체 내의 멤버 변수나 메소드만이 접근할 수 있다.
생성자(constructor)
자바에서는 객체의 생성과 동시에 인스턴스 변수를 원하는 값으로 초기화할 수 있는 생성자(constructor)라는 메소드를 제공한다.
생성자의 이름은 해당 클래스의 이름과 항사 같아야 한다.
즉, Person 클래스의 생성자의 이름은 Person 가 된다.
이러한 생성자는 다음과 같은 특징을 가진다.
생성자는 반환값이 없지만, 반환 타입을 void형으로 선언하지 않는다.
생성자는 초기화를 위한 데이터를 인수로 전달받을 수 있다.
객체를 초기화하는 방법이 여러 개 존재할 경우에는 하나의 클래스가 여러 개의 생성자를 가질 수 있다.
즉, 생성자도 하나의 메소드이므로, 메소드 오버로딩이 가능하다는 의미이다.
예제
Person(String name){
}
Person(String name, int age){
}
// 생성자 선언
1. 클래스이름() { ... } // 매개변수가 없는 생성자 선언
2. 클래스이름(인수1, 인수2, ...) { ... } // 매개변수가 있는 생성자 선언
위와 같이 생성자 중에는 매개변수를 전달받아 인스턴스 변수를 초기화 하는 생성자도 만들 수 있다.
this참조변수
this 참조 변수는 인스턴스가 바로 자기 자신을 참조하는 데 사용하는 변수이다.
이러한 this 참조 변수는 해당 인스턴스의 주소를 가리키고 있다.
public class Person{
private String name;
private int age;
}
Person(String name, int age){
this.name = name;
this.age = age;
}
이 예제처럼 생성자의 매개변수 이름과 인스턴스 변수의 이름이 같을 경우에는 인스턴스 변수 앞에 this 키워드를 붙여 구분해야 한다.
자바에서는 this 참조 변수를 사용하여 인스턴스 변수에 접근할 수 있다.
이러한 this 참조 변수를 사용할 수 있는 영역은 인스턴스 메소드뿐이며, 클래스 메소드에서는 사용할 수 없다.
출처