-
0. JAVA 기초 (3)카테고리 없음 2020. 3. 6. 21:04
- inheritance
public class A extends B { ... }
- inheritance 시에 자식 Class에서 부모 Class의 Constructor를 호출하지 않으면
컴파일러가 super(); 를 임의로 넣는다.
- Up Casting : 자식 클래스에서 부모 클래스로의 "묵시적" 형 변환
자식 클래스 instance를 new해서 부모 클래스 AAA에 넣으면, 알아서 부모 Class로 읽어들인다.
Customer AAA = new VIPCustomer(1, 2, 3);
Customer AAA = new Customer(); VIPCustomer BBB = new VIPCusomer(); AAA = BBB; // OK! BBB = AAA; // ERROR!
- Down Casting : 부모 클래스에서 자식 클래스로의 "명시적"형 변환. (Up Casting이 선행된다.)
Customer AAA = new VIPCustomer(1,2,3); VIPCustomer BBB = (VIPCustomer)AAA;
좀 더 안정적인 변환을 위해 아래와 같이 한다.
Customer AAA = new VIPCustomer(1,2,3); if( AAA instance of VIPCustomer) { // Class 검사 VIPCustomer BBB = (VIPCustomer)AAA; }
- Overriding : 자식 Class가 부모 Class Method를 재정의하는 것
- Overloading : 같은 Class 내에서 Method를 param을 다르게 여러 형태로 정의하는 것
[우클릭] - [Source] - [Overriding]으로 생성
@Override // Override Annotation : Compiler에게 Overriding을 알려줌 public int ParentClass(int param) { return super.ParentCalss(param); }
- Method : Class Function
- Method 별로 메모리에 주소가 할당된다. Overriding하지 않는 한 상속 관계의 Method는 같은 주소를 가진다.
- Abstract Class : Abstract Method 를 포함하는 Class.
- Abstract Calss는 new(인스턴스화) 할 수 없음
- Abstract Method : 구현 코드 없이 선언부만 있는 것.
- Abstract Method는 자식 Class에서 구체화(Validation)한다.
public abstract class Computer { // 추상 클래스 (표현 필요) public abstract void typing(); // 추상 메서드 (표현 필요) public void display() { } // 이건 추상 메서드가 아니다. public void turnOn() { Systeml.out.println("전원을 켭니다."); } }
Customer가 Abstract Class라면 아래와 같이 Up Casting을 해서 쓰기도 한다.
Customer AAA = new VIPCustomer();