본문 바로가기
JAVA 정리노트

JAVA 추상메소드,클래스와 인터페이스

by Dodledd 2024. 1. 29.

추상 메소드란?

아주 간단하다.

원래 메소드에서 중괄호 안쪽이 구현부가 빠졌다고 생각하면 된다. 

 

public void print() {

      System.out.println("Hello World");            <-이게 원래 메소드였다면

}

 

abstract public void print() {

                                                                       <-이게 추상메소드다.

}

추상메소드는 구현부가 없을 뿐더러 abstract라는 단어를 붙여서 일반 메소드들과 구분해주면 된다.

 

추상 클래스란?

이것또한 아주 간단하다.

클래스에 추상 메소드가 하나라도 섞여있으면 추상 클래스로 변해진다. 일반 클래스에 + 추상 메소드 = 추상 클래스.

따라서 추상 메소드 하나 빼고 생성자, 필드(변수), 일반 메소드가 다 있어도 추상 메소드 하나로 추상 클래스로 변해버린다.

또한 추상메소드가 존재한다면 클래스 명에도 abstract를 붙여줘야한다. 그렇기에 추상메소드와 일반메소드가 같이 있는데, 이 때 추상클래스에 단점이 드러난다.

추상클래스는 객체로 만들 수 없다. 그래서 객채지향인 자바에선  메리트가 확 줄어든다는 느낌을 받았다.

(요즘 잘 안쓴다고 합니다)

인터페이스란?

추상 클래스의 단점을 극복한 추상 메소드의 모음이라고 생각하면 된다.

인터페이스에서 작성된 모든 메소드들에는 abstract 가 붙어있다고 생각하면 되며 인터페이스에서 작성할 수 있는건

추상 메소드와 상수뿐이다.

인터페이스에서 상수를 작성하면 public static final 이 따로 작성하지 않아도 기본 값으로 가지고 있다.(보이지 않아도 써있음)

인터페이스의 구현은 implements 를 붙여주면 되며 인터페이스는 기존 클래스들과 다르게 다중상속이 가능하다.

인터페이스->인터페이스 로 상속이 가능하며 1번 인터페이스가 2,3,4 번 인터페이스에게 다중상속도 가능하다는 뜻이다.

그럼 인터페이스가 왜 좋은걸까?

기존 클래스에서 다중상속할 때 같은 메소드를 상속받게 되면 어디서 온건지 메소드의 출처가 모호해진다.

하지만 인터페이스에 작성된 메소드를 참고하면 메소드의 출처가 확실해져 논리에러가 줄어들 수 있다.

 

또 다른 장점으로는 대규모 개발시에 아주 편리해진다.

인터페이스는 추상메소드들의 집합으로 인터페이스를 상속 받았을 시 인터페이스 안에 있는 추상메소드를 모두 구현하지 않을 경우 에러가 발생됩니다.

그럼 이게 왜 좋을까? 꼭 필요한 기능을 작성하지 않는 실수를 방지할 수 있고 대규모 개발 때 메소드명이 서로 다르거나 하는 사고를 방지할 수 있습니다. -> 개발 시간의 단축

 

'JAVA 정리노트' 카테고리의 다른 글

JAVA의 기본 API  (2) 2024.01.31
JAVA RuntimeException(예외처리)  (4) 2024.01.31
JAVA 의 다형성  (0) 2024.01.24
JAVA 상속  (0) 2024.01.23
JAVA static과 객체배열에 대한 정리  (0) 2024.01.22