본문 바로가기
Computer Science/Mobile Programming

객체지향 프로그래밍 이해

by 이은선 2023. 1. 21.
728x90
SMALL

 오버로딩 & 오버라이딩 차이

오버로딩: 클래스 내애서 메소드의 이름이 같아도 파라미터의 개수나 데이터형만 다르면 여러 개의 선언이 가능하다.

오버라이딩 : 상위 클래스에서 정의된 메소드의 내용을 하위 클래스에서 재정의하는 것으로, 메소드의 이름, 파라미터 개수, 자료형, 리턴 타입이 모두 동일해야 한다.

 추상 클래스와 추상 메소드 개념

추상(abstract) 클래스: 인스턴스화를 금지하는 클래스로(상속을 위한 클래스이기 때문), 메소드 앞에 abstract 써서 사용

추상(abstract) 메소드 : 메소드 본체가 없는 메소드로, 메소드 앞에 abstract 써서 사용한다. 추상 메소드를 포함하는 클래스는 추상 클래스로 지정해야 한다.

추상 클래스를 사용하는 이유

 추상 클래스는 상속을 강제하기 위해 사용한다. , 부모 클래스에는 메소드의 원형만 정의 해놓고 그 메소드의 실제 동작 방법은 이 메소드를 상속 받은 하위 클래스의 책임으로 위임한다.

 인터페이스(Interface)

-class 키워드 대신 interface 키워드를 사용해서 정의

-내부에는 추상 메소드를 선언

-클래스에서 인터페이스를 받아서 완성할 때 implements 키워드 사용

-Java는 다중 상속을 지원하지 않지만, 인터페이스를 사용해서 다중 상속과 비슷하게 작성할 수 있음.

 

+) 인터페이스: 일종의 추상클래스인데 추상화 정도가 높다. 실제 구현된 것이 전혀 없는 기본 설계도이다. 추상 메소드와 상수만을 멤버로 갖는다. 인스턴스를 생성할 수가 없고, 클래스 작성에 도움을 줄 목적으로 사용된다. , 미리 정해진 규칙에 맞게 구현하도록 표준을 제시하는데 사용하는 일종의 명세서이다.

추상 클래스와 인터페이스 차이 :

추상 클래스(단일 상속) / 인터페이스(다중 상속)
추상 클래스의 목적은 상속을 받아서 기능을 확장시키는 것(부모의 유전자를 물려받는다.)
인터페이스의 목적은 구현하는 모든 클래스에 대해 특정한 메소드가 반드시 존재하도록 강제하는 역할 (부모로부터 유전자를 물려받는 것이 아니라 사교적으로 필요에 따라 결합하는 관계) 즉, 구현 객체가 같은 동작을 한다는 것을 보장하기 위함
인터페이스는 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메소드 또는 멤버 변수를 구성원으로 가질 수 없다. 즉, 오직 추상메소드와 상수만을 멤버로 가질 수 있으며, 그 외의 다른 어떠한 요소도 허용하지 않는다.
728x90
LIST