일반적으로 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 |