달력

5

« 2024/5 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
.. .. ..

1> abstract 키워드란?

하위 클래스에서 반드시 오버라이딩(재정의)를 해줘야만 하는 키워드이다.
메서드와 클래스에만 쓸수 있다.

2> abstract 특징

  1. 클래스와 메서드에만 사용 가능.
  2. 메서드에서는 프로타입(선언부)만 정의, 내용(구현부)은 없다.
  3. abstract 은 final, static과 같이 쓸순없다.

3> abstract 클래스 인경우

  1. 미완성 클래스(추상메서드가 포함된 클래스는 자동으로 추상클래스가 됨)
  2. 추상클래스는 추상메서드를 포함 가능(반드시 포함해야 하는 것은 아님)
  3. 구조상 상속해서 재정의해야만 사용 가능
  4. 자체적으로 객체를 생성할 수 없음
  5. 하위클래스에서 추상메서드를 반드시 구현(오버라이딩)해야 함
  6. 형식>>> abstract class 클래스명 {.......}

4> abstract 메서드 인경우

  1. 메서드의 원형만 선언된 메서드 : 블록({})이 없는 메서드
  2. 하위 클래스에서 반드시 오버라이딩해야함.
  3. 추상메서드를 포함하는 클래스는 반드시 추상클래스
  4. 형식>>> abstract 반환형 메서드명 (인자);

5> abstract 클래스 vs abstract 메서드

  • 추상메서드를 포함하는 클래스는 반드시 추상클래스
    -- 클래스에 abstract를 표시하지 않으면 에러
  • 추상클래스는 추상메서드를 포함 가능
    -- 반드시 포함해야 하는 것은 아님
  • 하위클래스에서 상속 받은 추상메서드를 반드시 재정의해야 함




▶ 인터페이스(Interface)

 1> 인터페이스(Interface)란?

 자바에서는 다중상속(여러 클래스로부터의 동시상속)을 금지하고 있다. 이 덕분에 명확한 상속관계가 유지되지만 필요에 따라 다중 상속이 필요할 때도 있다.이런 경우를 위해서 인터페이스라는 개념이 도입되었다. 즉, 인터페이스는 다중상속을 허용해 준다.
나중에 살펴볼 이벤트에서 인터페이스를 사용하므로 반드시 개념을 이해한다.

1. 객체모델링을 통한 클래스 구성

만약 tv, 오디오, 카메라를 클래스로 작성한다고 하자. 이 세가지에는 리모컨이라는 기능이 공통적으로 가지고 있으나 서로의 기능은 다르다. 따라서 상속을 한다면 다중상속이 되지 않기 때문에 각기 따로 클래스를 작성해서 상속을 해야한다. 그러면 코딩도 많아지고 불편할 것이다. 

2. 인터페이스를 통한 클래스 구성

다중상속이 허용되는 인터페이스를 사용하는 경우 리모컨 인터페이스를 선언해서 각 클래스에서 구현해서(인터페이스를 사용하는 것은 상속이라 하지 않고 '구현'이라 한다.) 각각의 클래스에 맞게 새롭게 내용만을 정의해 주면 된다. 이는 특히 공동작업을 하는 프로그램에서 통일된 코드를 작성할 수 있다.

2> 인터페이스 특징

  1. 클래스와 메서드 선언만 하고 내용은 없다.
  2. 인터페이스 사용시 반드시 하위 클래스는 인터페이스를 오버라이딩 해야한다.
  3. 인터페이스는 자동적으로 다음과 같이 된다.
    멤버 변수 : public final static
    메서드 : public abstract
  4. 구현을 위해 implements 키워드 사용.
    예> class 클래스명 implements 인터페이스1, 인터페이스2, 인터페이스3...{....}
  5. 다중 상속이 가능 . ,(콤마)를 구분으로 여러개 의 인터페이스를 상속가능.
  6. 인터페이스 끼리 상속 가능. 이때는 extends 키워드 사용.



 



 

'I.lib() > I.lib(Java)' 카테고리의 다른 글

JNDI 란?  (1) 2010.04.08
자바 리플랙션 (Java Reflection)  (1) 2010.03.29
Javap 란? (자바 역어셈블러)  (1) 2010.03.24
POJO (Plain Old Java Object) 란?  (0) 2010.03.23
클레스 어샘블리. (Class -> Java )변환  (1) 2010.03.05
.
:
Posted by .07274.