클래스와 객체_1

coha96 ㅣ 2023. 3. 3. 17:10

클래스 (class)

- 객체(ex: 사물, 실체)를 정의하는 설계도

- 붕어빵 틀

- 레시피

- ...


객체, 인스턴스

객체 (Object)

- 실체

 

인스턴스 (Instance)

- 클래스와 객체의 관계

- 클래스로부터 객체를 선언 (인스턴스 화)

- 어떤 객체는 어떤 클래스의 인스턴스


클래스 사용

클래스: 객체를 만들기 위한 설계도

- 객체 변수, 메소드로 이루어짐


생성자 (Constructor)

- 객체가 생성될 때 자동으로 호출됨

 

생성자 규칙

- 클래스명과 이름 맞추기

- 리턴 타입 없음


this, this()

this

- 객체 자신을 의미

 

this()

- 생성자


실습 코드

// Car 클래스 - 객체변수, 메소드
class Car{
    String name; // 변수 2개
    String type; // 만들기

    //생성자 같은 경우 클래스 이름과 동일하게. (생략 가능)
//     Car() {}


    public void printCarInfo(){ // void: 반환 값이 없다는 의미의 void
        // printCarInfo: 메소드 명

        // 메소드가 호출되었을 때 실행하고자 하는 코드
        System.out.println("== Car Info ==");
        System.out.println("name = " + name);
        System.out.println("type = " + type);
    }

    public void move(){
        System.out.println("이동!");
    }

    public void brake(){
        System.out.println("정지!");
    }
}

// Car2 클래스 - 생성자, this
class Car2 {
    String name;
    String type;


    Car2(String name, String type){ // 생성자. 데이터를 직접 입력 받게끔
        this.name = name;
        this.type = type;
        System.out.println("생성자 출력!");
    }

    public void printCarInfo(){ // void: 반환 값이 없다는 의미의 void
        // printCarInfo: 메소드 명

        // 메소드가 호출되었을 때 실행하고자 하는 코드
        System.out.println("== Car Info ==");
        System.out.println("name = " + name);
        System.out.println("type = " + type);
    }

    public void load(){
        System.out.println("짐을 주세요!");
    }

    public void horn(){
        System.out.println("빵빵!");
    }
}


public class Main {

    public static void main(String[] args) {
//      Car 클래스 사용
        Car myCar1 = new Car();
        myCar1.name = "a";
        myCar1.type = "suv";
        myCar1.printCarInfo(); // 각각의 메소드 출력
        myCar1.move(); // 각각의 메소드 출력
        myCar1.brake(); // 각각의 메소드 출력


//      Car2 클래스 사용
        Car2 myCar2 = new Car2("b", "sedan");
        myCar2.printCarInfo();
        myCar2.load();
        myCar2.horn();
    }
}

Practice

//  다음 클래스 직접 만든 후 객체 생성
//  클래스명: Animal
//  특성: 이름, 무게, 분류
//  기능: 먹기, 잠자기, 걷기, 뛰기

class Animal{
    String name;
    Double weight;
    String classification;

    //생성자 만들기
    Animal(String name, Double weight, String classification){
        // 이 값들을 모두 객체 변수로 할당
        this.name = name;
        this.weight = weight;
        this.classification = classification;

    }
    // 기본적인 출력 넣기
    public void printInfo(){
        System.out.println("name = " + name);
        System.out.println("weight = " + weight);
        System.out.println("classification = " + classification);
    }

    // 메소드 추가
    public void eat(){
        System.out.println("냠냠!");
    }

    public void sleep(){
        System.out.println("쿨쿨!");
    }

    public void walk(){
        System.out.println("걷기!");
    }

    public void run(){
        System.out.println("뛰기!");
    }
}

public class Practice {
    public static void main(String[] args) {
        // Test code
        Animal animal1 = new Animal("강아지", 5.0, "포유류");
        Animal animal2 = new Animal("구피", 0.01, "어류");

        animal1.printInfo();
        animal2.printInfo();
    }
}

'JAVA' 카테고리의 다른 글

Java Bean  (0) 2023.07.12
다차원 배열  (0) 2023.03.03
반복문  (0) 2023.03.03
조건문  (0) 2023.03.03
여러가지 연산자_2  (0) 2023.03.03