객체지향 프로그래밍
1.은닉
- 데이터와 해당 데이터를 다루는 메서드(함수)를 하나의 단위로 묶는것
- 데이터를 보호하고 외부에서의 접근을 제한한다.
- 클래스의 멤버변수를 private으로 선언하여 외부에서의 직접적인 접근을 제
1.1 은닉 - bad case
- 은닉을 사용하지 않는 클래스의 예
- 하지만 오류없이 정상적으로 작동한다
package encapsulation.badcase;
public class MyDate{
public int day;
public int month;
public int year;
public String toString(){
return this.year + this.month + this.day;
}
}
1.2 은닉 - good case
- 멤버변수들은 모두 private로 선언되어 있습니다.
- private 접근 제한자는 해당멤버의 참조범위를 자신의 클래스내로 제한하기에 다른 외부 클래스에서 이 변수를 직접 참조할수 없다
package encapsulation.goodcase;
public class MyDate{
private int day;
private int month;
private int year;
public void setDay(int d){
if ( (d<1) || (d>31)){
throw new RuntimeException("잘못된 날짜 입력");
}else{
day = d;
}
}
public int gatDay(){
return day;
}
public String toString(){
return this.year + this.month + this.day;
}
}
}
2. 상속 (Inheritance)
- 단일 상속만 가능하다 (자바는 한 번에 하나의 부모 클래스만 상속 가능).
- 기존 클래스를 확장(extends)하여 새로운 클래스를 만드는 것.
- 생성자는 상속되지 않는다.
- final 클래스는 상속할 수 없다.
- 모든 클래스의 최상위에는 Object 클래스가 있다 (toString(), hashCode(), equals() 등 기본 메서드 제공).
- extends 키워드로 상속을 표현한다.