ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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();

     

Designed by Tistory.