카테고리 없음

0. JAVA 기초 (3)

Louis.T.Kim 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();