2019.08.23
// 파생 (derive)
- 기존(부모) 클래스의 필드와 메서드 등의 '자산'을 상속한(inheritance)한 새로운 클래스를 만드는 것
- 파생될 때는 자산의 상속뿐만 아니라 필드와 메서드를 추가하거나 오버라이드를 할 수도 있다
// 상속 (inheritance)
- 기존의 클래스(부모 클래스)의 모든 자원과 메서드를 재사용하여 새로운 클래스(자식 클래스)에서 자신의 것처럼 사용
// 추상 클래스
- 키워드 : abstract
- 인스턴스를 생성할 수 없거나 또는 생성해서는 안됨
- 메서드 본체를 정의할 수 없고 내용은 하위 클래스에서 구체화해야한다
- 추상 메서드를 한개라도 갖는 클래스는 반드시 추상 클래스로 선언해야한다
- 추상 클래스에서 final, static, private을 지정할 수 없다
- 추상 클래스안에는 추상 메서드가 반드시 존재해야하고 일반 메서드도 존재할 수 있다
// 추상 메서드
- 키워드 : abstract
- abstract는 선언된 클래스에서는 메서드의 실체를 정의할 수 없기 때문에 나로부터 파생된 클래스에서 정의해달라는 의미
ex) 추상클래스와 추상메서드
1
2
3
4
5
6
7
8
9
10
11
12
13
|
package kr.or.ksmart.Abstract;
//추상 클래스(abstract로 선언) = 추상메서드와 일반메서드 공존
public abstract class CC01 {
//추상메서드 선언
public abstract void c_abstract();
//일반메서드 선언
public void c_a(){
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
package kr.or.ksmart.Abstract;
public class BB01 extends CC01{ // 상속
// 추상메서드를 상속 받은 클래스에서 정의
@Override
public void c_abstract() {
System.out.println("02 c_abstract실행 BB01.java");
}
public void c_a(){
System.out.println("03 c_a() BB01.java");
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
|
package kr.or.ksmart.Abstract;
public class AA01 {
public static void main(String[] args) {
// CC01 c = new CC01(); 오류, 추상 클래스는 인스턴스를 생성할 수 없다
BB01 b = new BB01();
b.c_a(); // 03 3_a() BB01.java
b.c_abstract(); // 02 c_abstract실행 BB01.java
}
}
|
'교육 > Java' 카테고리의 다른 글
#79 Java cmd로 자바 컴파일하기 (0) | 2019.09.04 |
---|---|
#72 Java 컴파일 (0) | 2019.08.26 |
#56 Java 다형성과 캐스팅 (0) | 2019.08.05 |
#51 Java CRUD기능의 간단한 사전 만들기 Delete (0) | 2019.08.01 |
#50 Java CRUD기능의 간단한 사전 만들기 Update (0) | 2019.08.01 |