카테고리 없음

JAVA의 추상 클래스와 객체의 형변화

하이후에호 2020. 1. 12. 23:05
반응형
abstarct 예약어

- 메서드와 클래스를 선언할 때 사용하는 Modifier

- 메서드를 선언할 때 absract 예약어를 붙이면 현재 메서드를 추상 메서드로 정의하겠다는 의미임

 

객체지향 프로그램에서 추상 메서드가 필요한 이유는?

 

 

추상 클래스의 특징

추상 클래스는 객체 생성을 할 수 없음.

컴파일 에러를 발생

 

만약 추상 클래스를 상속받는 자식 클래스가 Overriding 하지 않으면?

자식 클래스인 subClass는 methodB() 메서드를 Overriding 해야 함.

 

* methodB() 메서드를 Overriding 하지 않으면?

- subClass는 추상 클래스로 정의되어야 하고, subClass 역시 객체를 생성할 수 없음

- 추상 클래스를 부모 클래스로 지정한 자식 클래스는 부모의 모든 추상 메서드를 Overriding 해야 객체를 생성 할 수 있음.

 

추상 클래스의 활용

추상 클래스로 객체를 생성하려면 자식 클래스를 작성하고 Overriding 해야 객체를 생성할 수 있음.

->유지보수에 유용하다

 

 

ex)

- 모든 클래스의 메서드 시그니처를 통일할 수 없음.

- 다른 TV 클래스에 어떤 메서드가 정의되어 있는지 일일이 확인할 수 없음.

 

 

 

내부 클래스의 특징

멤버 클래스

- 멤버 변수와 동일한 위치에 선언된 내부 클래스

- static 예약어가 붙은 static 멤버와 instacne 멤버로 나뉨.

- 동일한 클래스뿐만 아니라 다른 클래스에서도 활용될 수 있음.

- 클래스의 멤버 변수와 성격이 비슷함.

 

지역 클래스

- 메서드 내의 클래스가 정의되어 있는 경우.

- 지역 클래스(이름이 가지고 있음)와 무명 클래스(이름을 갖지 않음)로 나뉨.

- 활용 범위가 메서드 블록 내부로 제한되는 특징을 갖는 등 지역 변수와 성격이 비슷함.

 

instance 멤버 내부 클래스

내부 클래스를 사용할려면 객체를 생성해야 한다.

static 멤버 내부 클래스

static을 활용했기 때문에 객체생성 X

이름이 있는 지역 내부 클래스

이름이 없는 지역 내부 클래스

- 이름을 갖지 않는 내부 클래스임

- new 예약어 뒤에 명시된 클래스가 기존의 클래스인 경우에는 자동적으로 이 클래스의 자식 클래스가 됨

- 이름이 없기 때문에 무명의 내부 클래스라고도 함

- 이름이 없는 지역 내부 클래스는 추상 클래스의 객체를 내부 클래스의 형태로 생성할 때 자주 사용됨

- 추상 클래스는 추상 메서드를 포함하고 있기 때문에 객체를 생성해야 함

* 추상 클래스를 상속할 클래스가 만들어져 객체를 생성해야 함

* 간단하게 이름이 없는 지역 내부 클래스로 만들어 사용하는 것이 편리할 수 있음.

 

형 변환의 개념

묵시적 형변환

명시적 형변환

 

 

객체 형변환의 개요

부모 클래스 유형을 자식 클래스 유형으로 강제 형 변환하는 경우에는?

-> 할당되는 인스턴스 유형에 따라서 실행 오류 발생

 

 

반응형