티스토리 뷰

📌 230803 TIL : 상속 및 추상클래스와 인터페이스의 차이 

 


1. 추상클래스와 인터페이스

📝 공통점 ?

메서드의 선언만 있고, 구현 코드가 없다는 공통점이 있다. 둘을 상속받은 클래스는 반드시 메소드를 구현해야한다. 

 

📝 차이점 ?

1) 개념적 차이점 

추상클래스는 extends 키워드를 통해 상속할 수 있다. 그래서 단 한개의 클래스만 상속이 가능하다. 그리고 일반변수, 생성자, 메소드, 추상메소드를 모두 가질 수 있다. 

인터페이스는 implements 키워드를 통해 상속하며, 다중 상속이 가능하다. 상수와 추상메소드만 가질 수 있으며 일반 메소드를 사용할려면 default 키워드를 붙여 사용해야한다. 

 

2) 어디서 사용해야하는지

추상클래스확장의 느낌으로, 자신의 기능을 하위클래스로 확장시키는 것이다.

반면 인터페이스포함의 느낌으로 인터페이스를 구현한 클래스들은 인터페이스의 기능을 구현한 것으로 본다. 

 

추상클래스는 확장의 느낌이기 때문에 final 상수를 이용한 템플릿 메소드를 통해 동작 시나리오를 구현할 수 있으며, 여러개의 객체들의 뼈대 같은 역할을 한다. 인터페이스는 다중 상속을 지원한다는 점에서, 여러개의 객체들의 공통점(뼈대) 보다는 객체들의 각 기능이 필요한 경우에 사용되는 것이다. 

 

추상클래스는 다중 상속이 불가능하기 때문에 하위 클래스에 물려줄 특성이 풍부 할수록 좋고,

인터페이스는 다중 상속이 가능하기 때문에 목적에 맞는 최소한의 메소드를 선언해야한다. 

 

2. 강의 내용 정리 

 

상속관계에서 하위클래스에서 상위클래스의 생성자를 호출하는 메서드를 기술하시요

super()

 

상속관계에서 상위클래스의 동작을 하위클래스가 동작의 일부를 변경하는것을 무엇이라고 하는가.

오버라이딩 

 

동적바인딩이란 무엇인지 기술하시요.

컴파일할 때에는 부모클래스로 되지만, 실행할 땐 오버라이딩 된 자식클래스의 메소드가 자동으로 실행되는 것?

 

A클래의 부모 클래스가 B라고 할때 Upcasting으로 객체를 생성하는 방법을 기술하시오.

B b = new A();

 

다형성인수가 무엇인지 설명하세요.

Dog d = new Dog(); Cat c = new Cat();

public void print(Animal a) {}

에서 Animal a 가 다형성 인수이다. 

 

검색 알고리즘 중 데이터를 중앙에서 부터 검색하는 알고리즘이 무엇이며 관련된 3개의 변수를 기술하세요.

이진검색, low,mid,high

 

자바의 상속관계에서 사용하는 상속의 키워드를 기술하세요.

extends

 

서로다른 객체 데이터 타입(A,B)을 하나로 묶는 방법을 상속관계로 설명해보세요.

같은 부모클래스 C를 상속받도록 하여, 업캐스팅 방법으로 둘을 묶어 사용한다. 

C a = new A();

C b = new B();