5주차 과제: 클래스
목표
자바의 Class에 대해 학습하세요.
목차
1. 클래스 정의하는 방법
2. 객체 만드는 방법 (new 키워드 이해하기)
3. 메소드 정의하는 방법
4. 생성자 정의하는 방법
5. this 키워드 이해하기
1. 클래스 정의하는 방법
클래스는 객체(인스턴스)를 만들어 내기 위한 틀이며, 객체는 클래스를 사용해 만든 실체이다.
따라서 클래스의 속성을 가지고 있지만, 각 고유값을 가지고 있어 구분된다.
클래스는 객체를 캡슐화하고 있다. 캡슐화란 객체를 캡슐로 감싸 보호하는 것을 말한다.
클래스의 구성요소를 멤버라고 부르며, 객체의 상태를 나타내는 필드(멤버 변수)와 객체의 행동을 나타내는 메소드(멤버 함수)로 구성된다.
2. 객체 만드는 방법 (new 키워드 이해하기)
public class Cricle{
int radius;
String name;
...메소드...
}
public static void main(String args[]){
Circle pizza; // Circle 객체에 대한 레퍼런스 변수 pizza 선언
pizza = new Circle(); // Circle 객체 생성
pizza.radius = 10;
pizza.name = "고구마피자";
}
(1) 레퍼런스 변수 선언
객체를 생성하기 전, 객체를 가르킬 레퍼런스 변수를 선언한다. 이 자체로 객체가 생성되진 않는다. 이 변수는 클래스의 객체에 대한 주소, 정확히는 레퍼런스를 가지는 변수일 뿐 객체 자체가 아니다.
(2) 객체 생성, new 연산자 이용
생성된 객체의 주소 즉 레퍼런스를 변수에 대입한다. 객체 메모리 할당 및 객체를 생성한다.
3. 메소드 정의하는 방법
// 메소드 선언
public static 리턴타입 메소드명(자료형 변수명){
실행코드;
return 리턴값;
}
// 메소드 호출
메소드명(값);
// 예시
public static int sum(int a, int b){
return a+b;
}
public static void main(String args[]){
sum(2,5)
}
4. 생성자 정의하는 방법
생성자(constructor)는 객체가 생성될 때 객체의 초기화를 위해 실행되는 메소드이다.
객체가 생성될 때 자동으로 호출된다.
생성자가 하나도 없는 경우, 컴파일러는 기본 생성자를 자동으로 만든다. 생성자가 하나라도 있으면 기본 생성자는 만들어지지 않는다.
public class Cricle{
int radius;
String name;
public Circle(){ // 매개변수가 없는 생성자
radius = 1;
name = "";
}
public Circle(int r, String n){ // 매개변수로 필드를 초기화하는 생성자
radius = r;
name = n;
}
}
- 생성자의 이름은 클래스 이름과 같다.
- 여러 개를 작성(오버로딩)할 수 있다.
- new로 객체를 생성 할 때 한 번만 호출된다.
- 리턴 타입을 지정할 수 없다.
5. this 키워드 이해하기
this는 현재 객체 자신에 대한 레퍼런스.
매개변수를 사용할 때 좀 더 직관적으로 이할 수 있게 도와준다.
public Circle(int radius){
this.radius=radius; // this.멤버변수=매개변수
}
- this는 생성자에서만 사용할 수 있다.
- 생성자의 첫 번째 문장이여야 한다.
- 같은 클래스 내 다른 생성자를 호출할 때 사용
public class Food{
String name;
int price;
void show(){
System.out.println(name + " " + price);
}
public Food() {
this("","");
System.out.println("생성자 호출됨");
}
public Food(String name){
this(name,500); // 2번
}
public Food(String name, int price){ // 3번
this.name=name;
this.price=price;
}
public static void main(String args[]){
Food pizza=new Food("피자",20000);
Food pizza=new Food("사탕"); // 1번
Food empty=new Food();
}
}
1번의 객체가 만들어지면 2번 생성자의 this를 통해 3번 생성자가 호출된다.