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()");
}
}
'개발자 양성과정 필기노트 > JAVA' 카테고리의 다른 글
오버라이딩 / 오버로딩 / 생성자와 super (0) | 2021.10.02 |
---|---|
Import / 접근제한자 / 상속 / 생성자 (0) | 2021.10.02 |
싱글톤 디자인 패턴 / final / 상수 (0) | 2021.09.14 |
Static (0) | 2021.09.14 |
JAVA 객체지향개념 (0) | 2021.09.02 |
댓글