본문 바로가기

자바 프로그래밍

[JAVA] 추상클래스 (abstract)

일반적으로 Interface - 추상클래스 ← 구현클래스 와 같은 구조로 프로그램을 작성함

                         (상속)          (상속)  

 

 

** 추상클래스 → 작업에 대한 표준화 

메소드를 표준으로 만드는 것 강아지 , 고양이 , 햄스터 ?? 

ex) 먹이를 준다, 목욕을 시킨다 등등 

하나 이상의 추상 메소드를 가진 클래스를 추상 클래스

추상 메소드란 ? 구체적인 내용은 없고, 기능(이름)만 명시한 메소드!

                      메소드의 선언부만 있고 괄호가 없다. 행위에 대한 기술이 없다. 어떤 작업을 할지 모른다.

 

abstract 라는 키워드는 멤버 변수에 붙을 수 없다!!!!!!!!!!!

클래스와 메소드에만 abstract 라는 키워드를 붙일 수 있다. (추상클래스, 추상메소드)

 

그러므로 추상 클래스를 이용해서는 인스턴스 객체를 만들 수 없다.

 

추상 클래스를 상속 받은 자식 클래스를 이용해서만 인스턴스 객체를 만들 수 있다.

 

추상 클래스를 상속 받은 자식 클래스는 추상 클래스 내부의 메소드를 구체화해야하 한다. (재정의)

메소드 오버라이딩 (↔ 오버로딩 : 같은 클래스 내부에서 같은 메소드를 인자와 반환 값을 달리 하여 정의할 수 있다)

 

오버라이딩은 상속 관계에서 발생하는 것을 말한다.

(추상 클래스에 정의된 추상 메소드에 대한 내용부를 자식 클래스 내부에 직접 기술한다)

 

 

 

3. 추상 메소드를 포함하는 클래스는 반드시 추상 클래스로 선언되어야 함

 

4. 추상 클래스는 인스턴스 생성이 불가능함.

 

 

5. 추상 클래스는 내용부를 가지고 있는 메소드를 정의할 수 있다.

 

6. 추상 클래스는 멤버 변수를 가질 수 있다. (= 정의할 수 있다, 하지만 abstract 키워드는 메소드, 클래스만 only)

 

 

 

형 변환이 발생함. 

 

 

 

재정의 

 

추상 클래스의 객체변수는 하위클래스

 

 

 

 

 

<최종>

 

annotation 

오버라이딩을 할 경우 

@Override 를 붙인다.

 

추상 클래스에 매개 변수가 있는 print() 메소드가 없다.

 

그러므로 다음과 같이 에러가 발생하는 것을 볼 수 있다.

 

Amateras UML 을 사용하여 만든 클래스 관계도를 볼 수 있다.

 

 

 

 

 

 

 

'자바 프로그래밍' 카테고리의 다른 글

[JAVA] 인터페이스  (0) 2019.05.21
[JAVA] 객체의 형변환  (0) 2019.05.21
[JAVA] 상속  (0) 2019.05.20
[JAVA] static 키워드  (0) 2019.05.20
[JAVA] 접근제한자  (0) 2019.05.17