캡슐화된 필드와 메서드 중에는 외부에 노출하지 않고 감추고 싶은 속성이나 메서드도 있을 것이다. 이런 경우 사용할 수 있는 것이 접근 제한자이다.
참고: https://velog.io/@gillog/Java-%EC%A0%91%EA%B7%BC-%EC%A0%9C%ED%95%9C%EC%9E%90
package javastudy;
public abstract class Bird {
public abstract void sing();
public void fly() { // 일반 메서드도 만들 수 있다.
System.out.printIn("날다.");
}
이 메서드가 추상 클래스라는 것을 알려주는 키워드가 abstract다. 메서드가 하나라도 추상 메서드라면 해당 클래스는 추상 클래스가 될 수밖에 없다.
package javastudy;
public class Duck extends Bird {
@Override
public void sing() {
System.out.printIn("꽥꽥!!");
}
}
package javastudy;
public class DuckExam {
public static void main(String[] args) {
Duck duck = new Duck();
duck.sing(); // 꽥꽥!!
duck.fly(); // 날다.
}
}