추상클래스 와 인터페이스

추상 클래스(abstract class)

  • 추상 메소드 . 기능이 구현되지 않고 stub, 원형만 선언되어 있는 메소드 입니다. . 중괄호 "{, }"가 생략되어 있습니다.

  예)
  public int add(int i, int j);

  public abstract int sub(int i, int j);
  • 추상 클래스는 추상 메소드가 1개이상 선언되어 있습니다.

  • 추상 클래스는 객체를 생성할 수 없습니다.

  • 추상클래스가 객체를 생성하려면 추상 메소드를 Overriding(구현) 해야 합니다.

  • 추상클래스를 구현한 클래스는 추상클래스를 상속받아 구현함으로 추상클래스 타입에 포함됩니다.(형변환)

추상 클래스의 실습

Sum.java

abstract class Sum {
//추상메소드 입니다.
public abstract String toString();

    public String sum(int i, int k){
        int sum = i+k;
        return ""+ sum;
    }


}

Sum_s1.java

Sum_s2.java

SumMain.java

final

final 클래스

final클래스는 상속될 수 없습니다.

final 메소드

자식 클래스가 Overriding 할 수 없습니다.

인터페이스 (Interface)

  • 추상 메소드로만 이루어져 있습니다."{}"가 없습니다.

  • 아래처럼 중괄호가 없고 메소드의 프로토타입만 선언되어 있으면 추상 메소드입니다. 예) public abstract void speedDown(int speed);

  • 추상메소드를 사용하는 이유는 앞으로 추가되거나 구현되어야하는 기능의 설계 역활을 하며 실제 기능은 구현하지 않고 메소드 프로토타입만 구현하는 것을 말합니다.

  • 추상 메소드는 건축물에서 구조를 이루는 철근과도 같고 설계도와 같은 역활을 합니다.

  • 외부에 공개할 메소드를 등록하는 목적으로도 사용됩니다.

  • 하나의 콤포넌트가 다양한 형태로 구현되어야 할 경우 인터페이스를 이용하면 콤포넌트의 사용법이 상당히 단순해 집니다.

  • 인터페이스를 구현한 클래스는 인터페이스상에 있는 추상 메소드를 전부 구현해야 합니다.

  • 인터페이스상에 있는 메소드를 하나라도 구현하지 않으면 인터페이스를 상속받은 클래스는 추상클래스가 됩니다.

  • A a_obj = new A(); 인터페이스는 객체를 만들 수 없습니다. 따라서 반드시 그 인터페이스를 구현한 클래스의 객체를 받아 사용하게 되어 있습니다.

  • 인터페이스에 선언된 메소드를 호출하면 그 인터페이스를 구현한 클래스의 메소드가 자동으로 호출됩니다.

  • 인터페이스를 이용하면 인터페이스를 구현하는 클래스들은 메소드의 형태가 같기 때문에 같은 메소드명을 이용하면서 다양한 구현을 할 수 있습니다. 이것은 마치 My-SQL용으로 개발된 프로그램을 Oracle 용으로 변경시에 JDBC 드라이버만 변경하면 프로그램이 작동하는 것과 같은 이치입니다.

Interface의 구현

Inter.java

InterImpl.java

}

인터페이스의 참조

  • 인터페이스를 이용하여 메소드만 호출하는 경우는 인터페이스 타입을 그대로 사용합니다.

  • 각 클래스의 멤버 변수에 접근하는 경우는 그 클래스 타입으로 형변환을 해주어야 합니다.

  • 인터페이스에 변수를 선언한다면 주로 상수를 선언합니다.

  • 메소만 선언되는 경우가 대부분입니다.

  • 인터페이스 타입 객체 = new 인터페이스 구현 클래스

IR2.java

D1.java

D2.java

IR2.java

Myinfo.java

Myinfointer.java

Myinfouse.java

Last updated