프로그래밍 공부

2025.01.21 java 공부

3452 2025. 1. 21. 16:32

추상 메서드

 

추상 메서드는 선언부만 정의하고 내용은 비워놓은 메서드로, 내용이 없기 때문에 하위 클래스에서 상속받으면 반드시 오버라이딩을 하라는 의미이다.

 

abstract void methodA(); // 내용이 없기 때문에 중괄호가 없고, 중괄호가 없기때문에 세미콜론을 찍음

 


 

추상 클래스

 

추상 메서드를 하나라도 멤버로 가지는 클래스이다.

 


 

 

인터페이스

 

인터페이스는 자바에서 다중상속을 구현하기 위해서 사용한다.

 

interface 인터페이스이름 {

 

}

 

인터페이스는 class 대신 interface를 사용하여 선언하지만, 클래스의 개념으로 본다.

 

인터페이스 안의 변수는 상수화되고, 메서드는 추상 메서드화 된다.

 

 

interface A { // 인터페이스 A 클래스

int a = 10; // int a = 10;이 상수화 되어 더 이상 변경불가

void say(); // 하위 클래스에게 오버라이딩 강제

}

 

class B implements A { // 인터페이스 A를 상속받는 B

void say() { // 반드시 오버라이딩 해야함

System.out.println("말하다");

}

}

 

인터페이스를 상속받을 때는 implements를 사용하며,

 

변수는 상수화, 메서드는 오버라이딩이 강제되는 형태가 되는데

 

이는 인터페이스가 다중상속의 개념을 구현하기위해서

 

변수와 메서드의 이름이 중복되는걸 시스템적으로 막은것이다.

 

또한 메서드 오버라이딩을 강제하여 반드시 메서드를 오버라이딩 해야하기 때문에

 

문서의 양식등의 용도로써 인터페이스를 주로 사용한다.

 

그 밖에 상속과의 차이점으로는

 

일반적인 상속은 기본적으로 부모클래스가 메서드를 가지고 있기 때문에

 

부모 클래스에 접근해서 메서드 접근이 자유로운 반면에

 

인터페이스는 선언만 해 놓았기 때문에 부모 객체의 메서드를 사용할수 없다.

 

공통점으로는 인터페이스도 결국 상속으로 자식클래스를 두기 때문에

 

다형성을 이용해서 쉽게 자식 클래스에 접근할 수 있다.

 

또한 인터페이스는 오버라이딩이 강제이기 때문에 다형성 적용이 더 용이하다.