<CodeStates> 추상화,인터페이스

한주영·2023년 2월 28일
0

추상화

abstract 제어자

abstract 키워드가 붙은 메서드를 추상 메서드
클래스 앞에 붙어있는 경우 추상 클래스라고 부른다

미완성 메서드, 미완성 클래스
객체 생성이 불가하다

특징

하위 클래스에서 오버라이딩을 통해
각각 상황에 맞는 메서드 구현이 가능

객체의 공통적인 속성과 기능을 추출하여 정의하는것

final 키워드

영어로 최종의,마지막의 뜻을 가지고있는 키워드는 필드, 지역변수,클래스앞에 위치할수있음

final class FinalEx{
 final int x=1 //변경되지 않는 상수
 final int getNum() {
    final int localVar=x //상수
 }
 }

인터페이스

서로 다른 두 시스템 장치, 소프트웨어 따위를 서로 이어주는 부분 또는 그런 접속장치

추상클래스를 설계가 모두끝나지않은 미완성 설계도라고 한다면
인터페이스는 더 높은 추상성 특징을 가지고있는 기초적인 밑그림

기본구조

class 키워드 대신 interface 키워드를 사용한다는 점에서 차이가 있다
또한 일반 클래스와 다르게 모든 필드가 public static final로 정의된다
static과 default메서드 이외의 모든 메서드가 public abstract로 정의된다는 차이가 존재한다

public interface InterfaceEx{
    public static final int rock=1;
    final int scissors=2;
    static int paper=3;
    
    public abstract String getPlayingNum();
    void call()
    }

인터페이스의 구현

추상클래스와 마찬가지고 인스턴스 생성 불가능
구현한다라는 의미를 가진 implements키워드 사용

다중상속이 허용된다

인터페이스의 특징

다중상속 가능
-> 껍데기만 존재하여 클래시 상속시 발생했던 모호함이없음
추상메서드와 상수만 사용가능
-> 구현소스를 생성할수없다
생성자 사용 불가
-> 객체가 아니므로
메서드 오바라이딩 필수
-> 자식 클래스는 부모 인터페이스 추상 메서드를 모두 오버라이딩 해야한다

인터페이스 사용 이유

추상클래스를 통해 객체들 간의 네이밍을 통일, 이로인해 코드의 가독성,유지보수가 향상됨
확장에는 열려있고 변경에는 닫혀있는 객체 간 결합도(코드 종속성)을 낮춘 유연한 방식의 개발이가능

profile
백엔드개발자가 되고싶은 코린이:)

0개의 댓글