ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 상속, Upcasting, Overriding, 다형성, Downcasting
    Java 2022. 1. 11. 00:01

    1/ 상속 (is a 관계)

    /* 	1/ Parent class가 먼저 생성
    	2/ Child class가 그 다음 생성됨 */
        
    class Customer{
    	//parent
    }
    
    class VIPCustomer{
    	//Child
    }

     

    2/ Upcasting

    Customer vc = new VIPCustomer();

    - 생성은 child class인 VIPCustomer로 되지만, 저장은 parent class인 Customer 타입으로 저장.

     

     

    3/ Overriding

    child class에서 parent class에 있는 메서드를 그대로 가져다 써서 재정의함.

    조건: return, name, parameter 동일해야함. 접근제어자는 상위클래스에서 정의한 것과 같거나 넓어야함.

    Customer vc = new VIPCustomer();
    vc.calcprice;

    Customer에 있는 calcprice 메서드를 가져오지 않고 VIPCustomer에서 재정의(overriding)한 calcprice 매서드를 사용.

    Virtual Method

     

     

    4/ 다형성

    하나의 parent 클래스를 상속 받는 child 클래스가 있는 경우

    각 child 클래스마다 같은 이름의 서로 다른 메서드 재정의(overriding) >> 상위클래스에서 정의한 메소드는 숨겨지고, 하위에서 정의한 메소드 동작.

    parent 클래스 타입으로 선언된 하나의 변수가

    여러 instance(child 클래스)에 대입되어 다양한 결과 실행됨(다형성이 구현된다.)

    class Animal { //parent class
    	public void move() {
    		System.out.println("동물은 움직입니다.");
    	}
    }
    
    class Human extends Animal { //child class
    	public void move() {
    		System.out.println("사람은 두 발로 걷습니다.");
    	}
    }
    	
    class Tiger extends Animal { //child class
    	public void move() {
    		System.out.println("호랑이는 네 발로 뜁니다.");
    	}
    }
    
    class Eagle extends Animal { //child class
    	public void move() {
    		System.out.println("독수리는 하늘을 날읍니다.");
    	}
    }
    
    public class AnimalTest {
    
    	public static void main(String[] args) {
    		
    		AnimalTest test = new AnimalTest(); //instance생성
    		test.move(new Human());		//test의 move실행, Animal animal = new Human();
    		test.move(new Tiger());
    		test.move(new Eagle());
    
    	}
    	
    	public void move(Animal animal) {
    		animal.move();	//하나의 줄로 다양한 결과 구현
        }
    }

     

    5/ 은닉성

    private으로 멤버변수 선언. getter와 setter로 접근

     

     

    **객체지향언어 특징

    1/ 상속 : 다중상속X

    2/ 다형성

    3/ 은닉성

     

    'Java' 카테고리의 다른 글

    HashMap, Thread (1/11)  (0) 2022.01.11
    Collection, Framework (1/10)  (0) 2022.01.11
    Abstract Class, Template, Interface  (0) 2022.01.10
    Array 배열  (0) 2022.01.10
    클래스, object, instance  (0) 2022.01.10
Designed by Tistory.