본문 바로가기
개발자 양성과정 필기노트/JAVA

추상클래스와 인터페이스

by jono 2021. 9. 28.

     I. 추상     


-> 구현을 강제하기 위해 사용한다.

 

 1) 추상클래스 

# 기본문법

abstract class 클래스명{ . . . }

 

 2) 추상메서드 

[접근제한자] [abstract] [리턴타입] 메서드명(매개변수) ;

public abstract void absMethod(int para) ;

*** 중괄호 { } 쓰지않음

 


      II. 인터페이스      


# 인터페이스의 필요성

  • 구현하도록 강제함으로써 코드를 표준화할 수 있다.
  • 상속 관계가 없는 클래스끼리 관계부여가 가능해서 다형성을 확장시키기 좋다.
  • 모듈 간 독립적 프로그래밍으로 개발시간을 단축시킬 수 있다.
  • 모듈교체가 쉽다.
    - 인터페이스를 통해 업캐스팅을 사용하여 다형성을 적용시키면,
      단순한 모듈(객체) 교체만드로 동일한 코드를 사용하여 여러 객체를 다룰 수 있게된다.
    - 새로운 모듈이 추가되더라도, 기존 인터페이스 구현체라면 별도의 코드 수정 없이
      객체의 교체만으로 그대로 사용이 가능하다.

 

 # 인터페이스 활용하기 

  • 인터페이스는 상수 추상메서드만 가질수있다.
    - 인터페이스 내의 모든 변수는 상수로 취급된다. 따라서 public static final 키워드 생략이 가능하다.
    - 인터페이스의 모든 메서드는 추상메서드로 취급된다. 따라서 abstract 키워드 생략이 가능하다.

  • 인터페이스는 인스턴스 생성이 불가능함.  상속 전용으로 사용한다.

  • 인터페이스를 구현한 클래스를 생성한 후,
      인터페이스 타입으로 업캐스팅하여 공통된 기능을 다형성으로 다루는 것이 보편적이다.

  • 다중구현 ( implements )이 가능하다.
    - 하나의 서브클래스가 둘 이상의 부모 인터페이스를 가질 수 있다.
    - 여러 부모인터페이스의 모든 추상메서드를 오버라이딩함.

  • 인터페이스끼리도 상속이 가능하다.
    - 인터페이스간의 상속은 extends를 사용함.
    - 인터페이스를 상속받은 인터페이스는 구현할 것이 없다.

  • 인터페이스도 instanceof 연산자의 판별대상이 될 수 있다.

  • 인터페이스를 구현한 클래스의 인스턴스 -> 인터페이스로 업캐스팅이 가능하다. (자동형변환)
public class Ex01 {
public static void main(String[] args) {

SubClass sc = new SubClass();

	sc.method1();
	
	if(sc instanceof MyInterface) {System.out.println("인스턴스 맞음");}
        else {System.out.println("아님");}

	MyInterface mi = sc;
     	mi.method1();
}}

interface MyInterface{
  public static final int NUM1=10;
  public abstract void method1();
}

class SubClass implements MyInterface{
	@Override
    public void method1(){
    	System.out.println("서브클래스에서 구현한 추상메서드 method1()");
    }
}

 

댓글