JAVA의 추상 클래스와 객체의 형변화
abstarct 예약어
- 메서드와 클래스를 선언할 때 사용하는 Modifier
- 메서드를 선언할 때 absract 예약어를 붙이면 현재 메서드를 추상 메서드로 정의하겠다는 의미임
객체지향 프로그램에서 추상 메서드가 필요한 이유는?
추상 클래스의 특징
추상 클래스는 객체 생성을 할 수 없음.
만약 추상 클래스를 상속받는 자식 클래스가 Overriding 하지 않으면?
자식 클래스인 subClass는 methodB() 메서드를 Overriding 해야 함.
* methodB() 메서드를 Overriding 하지 않으면?
- subClass는 추상 클래스로 정의되어야 하고, subClass 역시 객체를 생성할 수 없음
- 추상 클래스를 부모 클래스로 지정한 자식 클래스는 부모의 모든 추상 메서드를 Overriding 해야 객체를 생성 할 수 있음.
추상 클래스의 활용
추상 클래스로 객체를 생성하려면 자식 클래스를 작성하고 Overriding 해야 객체를 생성할 수 있음.
->유지보수에 유용하다
ex)
- 모든 클래스의 메서드 시그니처를 통일할 수 없음.
- 다른 TV 클래스에 어떤 메서드가 정의되어 있는지 일일이 확인할 수 없음.
내부 클래스의 특징
멤버 클래스
- 멤버 변수와 동일한 위치에 선언된 내부 클래스
- static 예약어가 붙은 static 멤버와 instacne 멤버로 나뉨.
- 동일한 클래스뿐만 아니라 다른 클래스에서도 활용될 수 있음.
- 클래스의 멤버 변수와 성격이 비슷함.
지역 클래스
- 메서드 내의 클래스가 정의되어 있는 경우.
- 지역 클래스(이름이 가지고 있음)와 무명 클래스(이름을 갖지 않음)로 나뉨.
- 활용 범위가 메서드 블록 내부로 제한되는 특징을 갖는 등 지역 변수와 성격이 비슷함.
instance 멤버 내부 클래스
static 멤버 내부 클래스
이름이 있는 지역 내부 클래스
이름이 없는 지역 내부 클래스
- 이름을 갖지 않는 내부 클래스임
- new 예약어 뒤에 명시된 클래스가 기존의 클래스인 경우에는 자동적으로 이 클래스의 자식 클래스가 됨
- 이름이 없기 때문에 무명의 내부 클래스라고도 함
- 이름이 없는 지역 내부 클래스는 추상 클래스의 객체를 내부 클래스의 형태로 생성할 때 자주 사용됨
- 추상 클래스는 추상 메서드를 포함하고 있기 때문에 객체를 생성해야 함
* 추상 클래스를 상속할 클래스가 만들어져 객체를 생성해야 함
* 간단하게 이름이 없는 지역 내부 클래스로 만들어 사용하는 것이 편리할 수 있음.
형 변환의 개념
묵시적 형변환
명시적 형변환
객체 형변환의 개요
부모 클래스 유형을 자식 클래스 유형으로 강제 형 변환하는 경우에는?
-> 할당되는 인스턴스 유형에 따라서 실행 오류 발생