JAVA 개념 4-2 - 추상클래스와 인터페이스

2023. 1. 12. 14:42· JAVA/JAVA 개념
목차
  1. 1) 추상클래스(Abstract Class)
  2. 2) 인터페이스(Interface)
  3. 3) default 메서드와 static 메서드 사용 예시
  4. 4) 추상클래스와 인터페이스 실습 예제
  5. 실행결과

1) 추상클래스(Abstract Class)

 : 추상클래스는 추상메서드(abstract method)를 포함하고 있는 클래스를 말합니다. 추상메서드란 구체적이지 않은 내용을 정의한 메서드를 말하는 것으로 추상 메서드로 정의된 메서드는 서브 클래스에서 반드시 오버라이딩을 통해 구현해야 합니다.

 추상클래스 자체는 new를 통해 인스턴스로 만들 수 없고 반드시 상속을 통해 구체적인 클래스를 만들어서 사용해야 합니다. 추상클래스를 상속해서 구현하는 것을 콘크리트 클래스(Concrete Class)라고도 부릅니다.

 

 

2) 인터페이스(Interface)

: 인터페이스는 다른 클래스를 작성할 때 기본이 되는 틀을 제공하면서, 다른 클래스 사이의 중간 매개 역할까지 담당하는 일종의 추상 클래스를 의미합니다. 또한 인터페이스는 상수와 추상 메서드만을 포함할 수 있습니다.

 

  Vehicle 클래스를 인터페이스로 정의하면 다음과 같습니다.

interface Vehicle {
	void brand();
}

 

 추상클래스와 다르게 인터페이스는 상속이 아니라 구현으로 클래스를 정의합니다.

class SportsCar implements Vehicle {
	...
}

 

 인터페이스는 다중 구현이 가능합니다. 이 경우 양쪽 인터페이스 모두의 추상메서드가 구현돼 있어야 합니다. 상속받을 클래스가 있다면 상속과 함께 사용하는 것도 가능합니다.

class ElectricSportsCar implements Vehicle, Electric {
	...
}
class ElectricMotorcycle extends Vehicle implements Eletric {
	...
}

 

3) default 메서드와 static 메서드 사용 예시

interface Vehicle {
    void brand();
    default go(int speed) {
    	...
    };
    static void stop() {
    	...
    }
}
  • brand()는 구현 클래스에서 반드시 구현해야 하는 추상메서드입니다.
  • go(int speed)는 기본 제공되는 메서드로 필요한 경우 오버라이딩 가능합니다.
  • stop()는 static 메서드로 구현 클래스 없이 Vehicle.stop()로 사용 가능합니다.

 

 

4) 추상클래스와 인터페이스 실습 예제

 

public interface Vehicle {
	void brand();
}
  • 교통수단에 따라 브랜드가 다르므로 brand() 메서드를 구현하도록 정의합니다.

 

public abstract class Eletric {
	private String name;
    
    void move() {
    	System.out.println("Electric run !!");
    }
    
    abstract void charging();
    
    public String getName() {
    	return name;
    }
    
    public void setName(String name) {
    	this.name = name;
    }
 }
  • 전기차의 종류 이름을 지정할 수 있도록 멤버변수를 추가합니다.
  • 전기차를 이동시키는 move() 메서드를 구현합니다.
  • 전기차를 충전시키는 방법은 다양하므로 charging() 메서드로 구현할 수 있도록 추상메서드로 선언합니다.

 

 

public class EletricSportsCar extends Electric implements Vehicle {

    @Override
    public void brand() {
    	System.out.println("FERRARI");
    }
    
    @Override
    void charging() {
    	System.out.println(getName() + " go to charging station");
    }
    
    public static void main(String[] args) {
    	ElectricSportsCar es = new ElectricSportsCar();
        es.setName("elec sports");
        es.brand();
        es.move();
        es.charging();
    }
}
  • elec sports라는 이름으로 전기 자동차 인스턴스를 생성합니다.
  • 메서드들을 사용해 동작을 확인합니다.

 

실행결과

FERRARI
Electric run !!
elec sports go to charging station

 

'JAVA > JAVA 개념' 카테고리의 다른 글

JAVA 개념 4-3 - 패키지와 제어자  (0) 2023.01.19
JAVA 개념 4-1 - 상속과 오버라이딩  (0) 2023.01.03
JAVA 개념 3-4 - 키보드 입력과 로깅  (0) 2022.11.30
JAVA 개념 3-3 - 배열  (0) 2022.11.25
JAVA 개념 3-2 - 반복문  (0) 2022.11.24
  1. 1) 추상클래스(Abstract Class)
  2. 2) 인터페이스(Interface)
  3. 3) default 메서드와 static 메서드 사용 예시
  4. 4) 추상클래스와 인터페이스 실습 예제
  5. 실행결과
'JAVA/JAVA 개념' 카테고리의 다른 글
  • JAVA 개념 4-3 - 패키지와 제어자
  • JAVA 개념 4-1 - 상속과 오버라이딩
  • JAVA 개념 3-4 - 키보드 입력과 로깅
  • JAVA 개념 3-3 - 배열
kms152000
kms152000
kms152000
백엔드 공부
kms152000
전체
오늘
어제
  • 분류 전체보기 (208)
    • JAVA - 백준 (110)
      • 입출력과 사칙연산 (13)
      • 조건문 (7)
      • 반복문 (12)
      • 1차원 배열 (10)
      • 문자열 (11)
      • 심화 1 (8)
      • 2차원 배열 (4)
      • 일반 수학 1 (7)
      • 약수, 배수와 소수 (6)
      • 기하 (8)
      • 시간 복잡도 (7)
      • 브루트 포스 (6)
      • 정렬 (11)
    • 한화시스템 BEYOND SW 캠프⁠ (0)
    • JAVA (32)
      • JAVA 개념 (13)
      • 생활코딩 JAVA 입문 수업 (19)
    • Frontend (0)
      • HTML (0)
      • CSS (0)
      • JS (0)
    • Backend (2)
      • Spring 인강 (2)
    • 코딩 테스트 (44)
      • Python - 백준 단계별로 풀어보기 (44)
    • 자격증 (12)
      • 정보처리기사 인강 - 필기 (5)
      • 정보처리기사 인강 - 실기 (7)
    • Database (0)
      • MySQL (0)
      • Oracle (0)
    • 개발 환경 (5)
      • JAVA (1)
      • Eclipse (1)
      • Eclipse 오류 해결 (1)
      • Apache Tomcat (1)
      • IntelliJ (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • hELLO 티스토리 스킨

인기 글

태그

  • 3항 연산
  • 제어자
  • 다차원 배열
  • 자바 기본 문법
  • 자바
  • 사칙 연산
  • 이클립스 환경 설정
  • 대입 연산
  • Eclipse 한글
  • copyOf
  • JAVA 변수
  • Java
  • java 메서드
  • 로깅 프레임워크
  • asList
  • 키보드 입력과 로깅
  • 생활코딩
  • 백준 1000번 자바
  • 자바 개념
  • 백준 10998번 자바
  • Eclipse console 한글 오류
  • 자바 컴파일 순서
  • Eclipse 환경 설정
  • 백준 자바 1008번
  • 백준 자바 10869번
  • 비트 연산자
  • 백준 자바 1001번
  • 관계연산자
  • 논리연산자
  • 백준

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
kms152000
JAVA 개념 4-2 - 추상클래스와 인터페이스
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.