본문 바로가기
공부/JAVA

자바의 클래스 (Java Class)

by 떈구 2025. 3. 7.

1. 클래스의 개념과 사용법

Java에서 클래스(Class) 는 객체를 생성하기 위한 틀(템플릿)이며, 객체의 속성(변수)과 동작(메서드)을 정의한다.

📌 클래스 선언과 사용 예제

// 클래스 정의
class Car {
    String brand;
    int speed;
    
    void drive() {
        System.out.println(brand + "가 " + speed + "km/h로 달립니다.");
    }
}

// 클래스 사용
public class Main {
    public static void main(String[] args) {
        Car myCar = new Car(); // 객체 생성
        myCar.brand = "Hyundai";
        myCar.speed = 120;
        myCar.drive(); // 메서드 호출
    }
}

📌 Car 클래스는 속성(brand, speed)과 동작(drive 메서드)을 포함하고 있으며, Main 클래스에서 객체를 생성하여 사용한다.

 


2. 클래스와 메인 메서드의 관계

  • Java 프로그램의 실행 진입점(entry point)은 main() 메서드이다.
  • 클래스는 main() 메서드가 없어도 독립적으로 존재할 수 있지만, 실제 실행은 main()에서 시작된다.
  • main() 메서드는 객체를 생성하고 클래스의 메서드를 호출하는 역할을 한다.
  •  
class Person {
    String name;
    
    void sayHello() {
        System.out.println("안녕하세요, 저는 " + name + "입니다.");
    }
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person();
        p.name = "철수";
        p.sayHello();
    }
}

📌 Person 클래스는 sayHello() 메서드를 갖고 있으며, Main 클래스의 main()에서 객체를 생성하고 사용한다.


3. public 키워드를 사용해야 하는 이유

📌 클래스에서 public 사용

  • public 클래스는 다른 패키지에서도 접근 가능하다.
  • Java에서 하나의 .java 파일에는 반드시 하나의 public 클래스만 포함되어야 한다.
  • public이 없는 클래스는 같은 패키지 내에서만 접근 가능하다.
public class Animal {
    void makeSound() {
        System.out.println("동물이 소리를 냅니다.");
    }
}

📌 public이 붙으면 다른 패키지에서도 Animal 클래스를 사용할 수 있다.

📌 메서드에서 public 사용

  • 클래스 외부에서 접근 가능하게 하려면 메서드에 public을 붙여야 한다.
  • 만약 public이 없다면 같은 패키지 내에서만 접근 가능하다.
class Dog {
    public void bark() {
        System.out.println("멍멍!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();
        myDog.bark(); // 정상적으로 호출 가능
    }
}

📌 bark() 메서드가 public이므로 Main 클래스에서 호출 가능하다.


4. 상속 (Inheritance) 사용법

Java에서 상속(Inheritance) 은 기존 클래스를 확장하여 새로운 클래스를 만드는 기능이다.

📌 Java에서 상속 사용 방법

  • extends 키워드를 사용하여 상속을 구현할 수 있다.
  • 부모 클래스의 멤버 변수와 메서드를 자식 클래스에서 그대로 사용할 수 있음.
class Animal {
    String name;
    
    void eat() {
        System.out.println(name + "가 먹고 있습니다.");
    }
}

class Dog extends Animal {
    void bark() {
        System.out.println("멍멍!");
    }
}

public class Main {
    public static void main(String[] args) {
        Dog myDog = new Dog();
        myDog.name = "바둑이";
        myDog.eat(); // 부모 클래스 메서드 사용
        myDog.bark(); // 자식 클래스 메서드 사용
    }
}

📌 Dog 클래스가 Animal 클래스를 상속하여 eat() 메서드를 사용 가능.

📌 C++과 Java의 상속 차이점

구분C++Java

상속 키워드 : (콜론) 사용 extends 키워드 사용
다중 상속 ✅ 지원됨 ❌ 지원되지 않음 (인터페이스 사용)
기본 접근 제한자 private package-private

📌 Java는 다중 상속을 지원하지 않으며, 인터페이스(interface)를 사용하여 유사한 기능을 구현한다.


5. 패키지와 클래스의 관계

📌 패키지란?

  • Java에서 패키지(Package) 는 클래스들을 그룹화하여 관리하는 기능이다.
  • 같은 패키지 내의 클래스들은 서로 쉽게 접근할 수 있다.
package mypackage;

public class MyClass {
    public void show() {
        System.out.println("MyClass 실행!");
    }
}

📌 mypackage라는 패키지 안에 MyClass를 정의하여 관리할 수 있다.

📌 import를 통한 클래스 사용

import mypackage.MyClass;

public class Main {
    public static void main(String[] args) {
        MyClass obj = new MyClass();
        obj.show();
    }
}

📌 import를 사용하면 다른 패키지에 있는 클래스를 쉽게 불러와 사용할 수 있다.


6. 정리

  1. 클래스는 객체의 속성과 동작을 정의하는 틀이다.
  2. main()** 메서드는 프로그램 실행의 시작점이며, 클래스의 객체를 생성하고 메서드를 호출할 수 있다.**
  3. **public**을 사용하면 클래스와 메서드를 외부에서 접근 가능하게 만들 수 있다.
  4. 클래스 내부의 메서드는 멤버 변수를 조작하며 동작을 정의한다.
  5. **패키지는 클래스를 그룹화하여 관리하며, ****import**를 통해 다른 패키지의 클래스를 사용할 수 있다.
  6. **Java의 기본 접근 제한자는 ****package-private**이며, 같은 패키지 내에서만 접근 가능하다.
  7. Java는 extends 키워드를 사용하여 상속을 구현하며, 다중 상속은 지원하지 않는다.