서로 연관있는 속성과 기능을 하나로 묶어 외부로부터 데이터를 보호하는 것
public class Time {
private int hour;
public void setHour(int hour) {
if ( hour < 0 || hour > 23 ) return;
this.hour = hour;
}
}
public class Main {
Time t = new time();
t.setHour(25);
}
외부의 직접접근을 막아 클래스에 정의된 속성을 보호
상세 구현은 숨기고 외부에 필요한 부분만 노출하는 것
public abstract class Car {
public abstract void move();
}
public class PoliceCar extends Car{
@Override
public void move() {
System.out.println("사이렌을 울립니다");
}
}
public class SnowCar extends Car {
@Override
public void move() {
System.out.println("제설을 합니다");
}
}
미완성 메서드를 갖고 있는 클래스
다른 클래스 작성에 도움을 주기 위함이다
추상메서드의 집합으로, 구현된 것이 없는 '설계도'개념이다
두 클래스를 부모와 자식으로 관계를 맺어주는 것
기존의 클래스로 새로운 클래스를 작성하는 것
class Parent { }
class Child extends Parent { }
class Point {
int x;
int y;
}
class Point3D extends Point {
int z;
}
JAVA는 단일 상속만을 허용한다
자손은 조상의 모든 멤버를 상속받는다(생성자, 초기화 블럭 제외)
조상클래스의 변경 사항은 자손클래스에 영향을 주지만, 자손클래스의 변경사항은 조상클래스에 영향을 주지 않는다
상속받은 조상의 메서드를 자신에 맞게 덮어쓰는 것
여러가지 형태를 가질 수 있는 능력
조상 타입 참조 변수로 자손 타입의 객체를 다루는 것
Tv t = new Tv();
SmartTv s = new SmartTv();
Tv t = new SmartTv();
하나의 타입에 여러 객체를 대입할 수 있는 성질