본문 바로가기

language/자바

[java] abstract 추상화

abstract class를 쓰는 경우는 두가지다

 

1. new를 막으려고 ( = 객체 생성 방지)

 

 (e.g.) 도형이라는 클래스가 있다고 하고 하위에 삼각형, 사각형, 오각형이 있다.

삼각형, 사각형, 오각형 객체를 생성해서쓰는데

도형이라는 객체를 생성할 필요 없기때문에 abstract로 생성하지못하게 방지하는것이다.

 

 

2.  abstract 메소드가 있어서

한 클래스에 abstract 메소드가 있으면 

해당 클래스도 absract여야 한다!!! 

이거는 idle에서 빨간 밑줄이 쳐지기 때문에 금방 알수있을 것이다.

 

 

--> abstract 메소드가 있는 클래스를 상속받은 하위 클래스에서는 

 해당 메소드에 대한 구현이 있어야한다.

 (e.g.) 상위 클래스 도형에 추상메소드인 abstract lineNum(); 쓰니까  

하위에서는 lineNum을 쓸때 내용을 구현해주어야 한다!

 

만약 구현하지 않고 싶다면

 tri를 abstract 클래스로 만들고 이 클래스를 상속받는 클래스에서

내용을 구현해주는 방법이 있다