Java - 클래스 접근제어자/상속 추상화 인터페이스

m0ng·2025년 6월 17일

클래스와 객체

  • 클래스: 객체를 만들기 위한 설계도
  • 객체: 클래스에서 생성된 실체 (인스턴스)
class Person {
    String name;
    int age;
}

Person p = new Person(); // 객체 생성
접근제어자
public	어디서든 접근 가능	클래스, 필드, 메서드
private	같은 클래스 내에서만 접근 가능	필드, 메서드
protected	같은 패키지 + 자식 클래스 접근	필드, 메서드
(default)	같은 패키지 내에서만 접근 가능	클래스, 필드, 메서드
캡슐화

    멤버 변수를 private으로 숨기고, getter/setter로 접근 제어

class User {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

📗 Java – 상속, 추상 클래스, 인터페이스

상속

  • 기존 클래스의 기능을 물려받아 새로운 클래스를 정의
class Animal {
    void sound() {
        System.out.println("소리 낸다");
    }
}

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

super 키워드


    부모 클래스의 생성자나 메서드 호출 시 사용

    super() → 부모 생성자 호출, super.메서드() → 부모 메서드 호출

추상 클래스 (abstract)

인스턴스를 만들 수 없음

자식 클래스가 반드시 메서드를 오버라이드 해야 함
abstract class Shape {
    abstract void draw();
}

인터페이스 (interface)

메서드 선언만 있고, 구현은 클래스에서 함

다중 구현 가능 → 다형성의 핵심
interface Drawable {
    void draw();
}

class Circle implements Drawable {
    public void draw() {
        System.out.println("원을 그린다");
    }
}

0개의 댓글