클래스와 객체
- 클래스: 객체를 만들기 위한 설계도
- 객체: 클래스에서 생성된 실체 (인스턴스)
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("원을 그린다");
}
}