본문으로 바로가기

1. 클래스와 객체

- 클래스의 정의 : 객체를 정의해 놓은 것

- 클래스의 용도 : 객체를 생성하는데 사용

- 객체의 정의 : 실제로 존재하는 것 (사물 또는 개념)

- 객체의 용도 : 객체의 속성과 기능에 따라 다름

- 클래스를 정의하고 클래스를 통해 객체를 생성하는 이유는 설계도를 통해서 제품을 만드는 이유와 같다.

- 하나의 설계도만 잘 만들어 놓으면 제품을 만드는 일이 쉬워지는 것과 같기 떄문이다.

- JDK에서는 많은 수의 유용한 클래스(API)를 기본적으로 제공하고 있다.


2. 객체와 인스턴스

- 객체는 인스턴스를 포함하는 일반적인 의미

- 인스턴스화 : 클래스로부터 인스턴스를 생성하는 것

- 클래스 > 인스턴스화 > 인스턴스(객체)


3. 객체의 구성요소

- 객체는 다수의 속성과 다수의 기능 두 종류의 구성요소로 이루어진다.

- 객체는 속성과 기능의 집합이며, 속성과 기능을 객체의 멤버라고 한다.

- 속성(Property) : 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)

- 기능(function) : 메서드(method), 행위(behavior), 함수(function)


4. 인스턴스의 생성

- 클래스명 참조변수명 = new 클래스명();

- 클래스의 객체를 참조하기 위한 참조변수를 선언하고 객체를 생성 후, 객체의 주소를 참조변수에 저장한다.

- 인스턴스 초기화 : 인스턴스 변수에 적절한 값을 저장하는 것이다.


5. 생성자(Constructor)

- 클래스이름(타입 변수명, 타입 변수명) { // 인스턴스 생성시 수행될 코드 }

- 인스턴스가 생성될 때마다 호출되는 '인스턴스 초기화 메소드' 이다.

- 인스턴스 변수의 초기화 또는 인스턴스 생성시 수행할 작업에 사용한다.

- 몇가지 조건을 제외하고는 메서드와 같다.

- 모든 클래스에는 반드시 하나 이상의 생성자가 있어야 한다.

- 생성자의 이름은 클래스의 이름과 같아야 한다.

- 생성자는 리턴값이 없다. void도 쓰지 않는다.

- 기본 생성자(default constructor) : 매개변수가 없는 생성자, 클래스에 생성자가 하나도 없으면 컴파일러가 기본 생성자를 추가한다.

- 매개변수가 있는 생성자 : 인스턴스마다 각기 다른 값으로 초기화되어야하는 경우가 많기 때문에 매개변수를 사용한 초기화는 매우 유용하다.



 

// 생성자를 사용하지 않은 예제
 
package com.tistory.gangzzang;
 
class Human {
    String name;
    String gender;
    int age;
 
    void eat(String some) {
        System.out.println(age + "살 " + name + "이(가) " + some + "을(를) 먹는 중");
    } // eat : 먹는 메소드
 
    void sleep() {
        System.out.println(age + "살 " + name + "이(가) 자는 중");
    } // sleep : 자는 메소드
 
} // Human 클래스
 
class HumanTest {
 
    public static void main(String[] args) {
 
        Human human = new Human(); // 클래스명 참조변수명 = new 클래스명();
 
        human.name = "갱짱";
        human.gender = "남자";
        human.age = 25;
 
        human.eat("과자"); // 객체 사용방법 : 참조변수명.메소드명(인자값이 있다면 인자값);
 
        human.sleep();
    } // main
 
} // HumanTest 클래스
 
 
 
 // 생성자 사용한 예제
 
class Human2 {
    private String name;
    private String gender;
    private int age;
 
    Human2(String name, String gender, int age) {
        this.name = name;
        this.gender = gender;
        this.age = age;
    // Human 생성자
     
    Human2(String name) {
        this.name = name;
    }
 
    void eat(String some) {
        System.out.println(age + "살 " + name + "이(가)" + some + "을(를) 먹는 중");
    } // eat : 먹는 메소드
 
    void sleep() {
        System.out.println(age + "살 " + name + "이(가) 자는 중");
    } // sleep : 자는 메소드
 
} // Human 클래스
 
class HumanTest2 {
 
    public static void main(String[] args) {
 
        // 객체를 생성함과 동시에 자동으로 수행되어 맴버변수들의 값을 특정한 값으로 초기화 > 생성자
        Human2 human1 = new Human2("갱짱", "남자", 25);
        Human2 human2 = new Human2("이갱짱");
         
        human1.eat("껌");
        human2.eat("커피");
         
    } // main
 
} // HumanTest2 클래스