본문 바로가기
IT/JAVA

[JAVA/자바] abstract 추상 클래스 - 오버라이딩

by 가아앗 2022. 11. 2.
반응형

 추상 - abstract

 

추상은 실체 간의 공통되는 특성이나 속성을 추출한 것을 말한다.

 

예를 들어 고양이, 개, 호랑이의 공통되는 특성은 동물이다. 이와 같이 구체적인 실체가 아니라 공통되는 특성이 추상적인 것이다.

 

실체 클래스 = 객체를 직접 생성할 수 있는 클래스
추상 클래스 = 실체 클래스들의 공통적인 특성을 추출해서 선언한 클래스

 

추상 클래스와 실체 클래스는 상속관계이다. (상속해서 사용하도록 강제한다.)

 

추상 클래스가 부모이고 실체 클래스는 자식관계이며 실체 클래스는 추상 클래스의 특성(필드, 메서드)을 물려받고, 추가적으로 특성을 가질 수 있다.

 

 

○ 추상 클래스 선언

 

sound라는 추상 메소드를 가지고 있기에 클래스 앞에 'abstract'를 써서 추상 클래스를 만든다.

추상 메소드는 메소드를 선언할때 'abstract' 붙인 메소드이며 구체적인 내용을 가지고 있지 않다.

sound 메소드와 다르게 house메소드는 { }과같이 구체적인 로직이 있기 Error이다.

추상 메소드는 appearance method와 같이 일반 메소드도 구현할 수 있다.

 

 

 추상 클래스를 쓰는 이유?

 

Dog.class, Cat.class, Tiger.class (실체 클래스)에서 sound( )메소드를 사용한다고 했을 때 Animal.class(추상 클래스)에서 sound( ) 메소드를 선언하게 되면 실체 클래스에서 통일된 이름의 메소드를 사용함으로써 실체 클래스마다 동일한 기능을 제각기 다른 이름을 가지는 것을 방지한다.

 

또한 추상 클래스에서 공통적인 필드, 메소드를 선정해주면 실체 클래스는 다 상속을 받기 때문에 각자 추가할 특성만 작성하면 되기에 더욱 간편합니다.

 

 

 예제

 

출력 :

야옹
복실이
멍멍
Cute

 

추상 클래스(Animal Method)의 추상 메소드(sound method)는 자식 메소드에서 사용을 강제한다.

일반 메소드(appearance method)는 사용을 해도 되고 안해도된다. (Dog class에서만 사용하였다.)

 

반응형

댓글