- 오늘 배운 키워드
- 캡슐화
- 캡슐처럼 데이터를 보호한다
- 무분별한 세터를 주의할 것 -> 접근제어자로 제한을 걸었더라도 세터를 통해서 변경 가능한 경우에는 주의해야한다
- 또한 수없이 많은 세터가 존재시킬 때도 무분별한 세터이다 -> 의미있는 세터로 변경
- 상속
- 부모의 속성을 물려받는다
- 오버라이딩은 부모의 메서드를 자식 클래스에서 변경하여 재정의하는 것
- abstract를 통해서 자식클래스에서 반드시 구현해야하는 메서드를 정의할 수 있다
- abstract를 사용할땐 클래스도 추상 클래스가 되어야하는데, 추상 클래스는 인스턴스화될 수 없다
- 인터페이스와 추상클래스가 비슷하다고 생각되었다 -> 인터페이스는 표준을 제공/추상클래스는 계층적 구조를 선언
- 추상화
- 불필요한 건 제거하고 필요한 것만 남기기
- 인터페이스와 클래스를 상속을 통해서 유지보수에 크게 기여
- 다형성
- 다형성을 통해 상위계층 타입으로 여러가지 하위 계층 객체를 만들 수 있다
-> 즉, 자식타입을 부모타입으로 자동으로 업캐스팅해주었기 때문이다
- 단 자식클래스의 고유 기능을 명시적 다운캐스팅 없이 사용할 수 없다
- instanceof를 사용하여 다운캐스팅시 다른 객체로 다운캐스팅하지않게 처리
- if(animal1 instanceof Cat){...}
- 배열을 다룬다고 할 때 Animal[] ani = {new Cat(), new Dog()} 이런식으로 여러 타입의 데이터를 다룰 수 있게된다는 장점이 크다