Programming Language/Java

클래스(Class) & 객체(Object)

DongHo 2023. 5. 17. 02:21

클래스(Class)

  • 객체를 정의하는 설계도
  • 붕어빵 틀
  • 레시피
public class 클래스명 {
	// 객체 변수
    // 메소드
    // (접근제어자)
    // (static)
}



클래스명 객체명 = new 클래스명();

 

객체(Object)

  • 실체(?) 

인스턴스(Instance)

  • 클래스와 객체의 관계입니다.
  • 클래스로부터 객체를 선언 (인스턴스 환)
  • 어떤 객체는 어떤 클래스의 인스턴스

 

생성자(Constructor)

  • 객체가 생성될 때 자동으로 호출됩니다.
  • 생성자 규칙
    • 클래스명과 이름 맞춰야합니다.
    • 리턴 타입은 없습니다.
public class 클래스명 {
	// 바로 아래가 생성자
    클래스명() {}
}

 

this : 객체 자신을 의미합니다.
this() : 생성자

위에 것들을 이용한 간단한 예시

class Car {
    String name;
    String type;

    public 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("정지!");
    }
}

class Car2 {
    String name;
    String type;

//    Car2() {} 생성자 만들기
    Car2(String name, String type) {
        this.name = name;
        this.type = type;
        System.out.println("생성자 출력!");
    }

    public 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 myCar1 = new Car();
        myCar1.name = "a";
        myCar1.type = "suv";
        myCar1.printCarInfo();
        myCar1.move();
        myCar1.brake();

        Car2 myCar2 = new Car2("b", "sedan");
        myCar2.printCarInfo();
        myCar2.load();
        myCar2.horn();
    }
}

 

접근제어자

  • 클래스의 변수나 메소드의 접근에 제한을 두는 키워드입니다.

접근제어자의 종류

private 해당 클래스에서만 접근 가능합니다.
public 어디서든 접근 가능합니다.
default 해당 패키지 내에서만 접근 가능합니다.
protected 해당 패키지 및 상속받은 클래스에서 접근 가능합니다.

 

Static

  • 변수나 메소드의 특성을 바꾸는 키워드
  • 특징
    • 메모리에 한번만 할당됨
    • 즉, static 변수나 메소드는 공유되는 특성을 가짐
  • Static 클래스 변수
    • 해당 클래스이 각 객체들이 값을 공유
  • Static 클래스 메소드
    • 객체를 생성하지 않아도 호출 가능

'Programming Language > Java' 카테고리의 다른 글

다향성(Polymorphism)  (0) 2023.05.17
상속(Inheritance)  (0) 2023.05.17
객체지향 프로그래밍(Object Oriented Programing)  (0) 2023.05.17
HashMap 주요 메소드  (0) 2023.05.17
HashSet 주요 메소드  (0) 2023.05.17