private, getter/setter)extends)오버라이딩, 오버로딩)abstract, interface)데이터(필드)와 기능(메서드)을 하나의 클래스 안에 묶고, 외부에서 접근하지 못하도록 제한하는 것
public/private/protected) 필요한 부분만 외부에 공개 (getter/setter)public class User {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
private, public 등부모 클래스의 속성과 기능을 자식 클래스가 물려받는 것
extends 키워드를 사용class Animal {
void sound() {
System.out.println("소리를 냅니다.");
}
}
class Dog extends Animal {
void bark() {
System.out.println("멍멍!");
}
}
하나의 객체가 여러 형태를 가질 수 있는 성질
class Animal {
void sound() {
System.out.println("동물이 소리를 냅니다.");
}
}
class Cat extends Animal {
@Override
void sound() {
System.out.println("야옹~");
}
}
public class Main {
public static void main(String[] args) {
Animal a = new Cat(); // 다형성
a.sound(); // 실행 결과: 야옹~
}
}
공통된 특징을 뽑아내어 불필요한 구현은 숨기고 필요한 것만 표현
abstract class 또는 interface를 사용abstract class Shape { // abstract class
abstract void draw();
}
class Circle extends Shape {
@Override
void draw() {
System.out.println("원을 그립니다.");
}
}
interface Drawable { // interface
void draw();
}