[Java] 추상클래스(Abstract Class)와 인터페이스(Interface) 이해하기

추상클래스에서 추상이라는 것은 완전히 구체화 되지 않은 것이다. 예를 들어 Animal이라는 클래스를 사용할때 누구는 Cat 누구는 Dog 이런식으로 구체화된 클래스를 만들어낼 것이다. Animal 클래스는 어떤 동물인지 구체화 되지않았기 때문에 추상클래스가 될수 있다.

프로그램상에서 Abstract Class를 사용하는 이유는 Animal을 강제로 구체화된 클래스로 만들라는 이유이다. Animal자체를 new Animal() 해서 인스턴스화 시키는걸 미연에 방지시키는 것이다. 그러면 강제로 프로그래머들은 Animal 클래스를 상속받아 어떤 동물인지 구체적으로 재정의하게 해줄것이다.

 

인터페이스는 단지 모형만 재정의 해준것이다. 변수와 함수를 정의해놓지 않기 때문에 인터페이스는 상속받는게 아니라 구현(Implement)한다고 한다. 그래서 extends 대신 Implements를 써주는 것이다. 

인터페이스는 변수와 함수명만을 정의하지만 그안에서 구현된건 하나도 없다. 다시 다 구현해야 한다. 그래서 첨부터 만들때 구현한상태로 만들면되는데 인터페이스를 왜 사용해야 되는지 이해를 못할수도 있지만 많은 사람들하고 같이 작업해야되는 경우 클래스를 만들었는데 똑같은 의미로 쓰이는 변수, 함수명이 달라 혼동이  올수 있다 이런것들을 방지하는 차원에서 인터페이스를 사용한다.

예를 들어 여러 사람들이 사람클래스를 만들어낼때 그안에 쓰이는 변수와 함수를 정의해 나갈것이다. 누군가는 나이를 age 누군가는 nai 이런식으로 같은 의미인데 다른 변수명과 함수를 사용하여 다른사람이 볼때 혼동이 오는것이다. 혼동을 방지하기 위해 클래스의 모형을 정의해준게 인터페이스이다. 

댓글

Designed by JB FACTORY