본문 바로가기

자바☕

다형성(Polymorphism)과 오버라이딩(Overriding)

728x90

0. 오버라이딩과 오버로딩

오버라이딩 : 올라타기

오버로딩 : 적재하기

pakage polymorphism01;

public class Animal {
	public String name;
    
    public void showName() {
    	System.out.println("안녕 나는 %s야. 반가워/n", name);
    }
}

===============================================================================================
pakage polymorphism01;

public class Penguin extends Animal {
	public String habitat;
    
    public void showHabitat() {
    	System.out.println("%s는 %s에 살아/n", name, habitat);
    }
    
	// 오버라이딩 - 재정의 : 상위 클래스의 메서드와 같은 메서드 이름, 같은 인자 리스트
	public void showName() {
    	System.out.println("어머 내 이름은 알아서 뭐하게요?";
    }
    
    // 오버로딩 - 중복 정의 : 같은 메서드 이름, 다른 인자 리스트
    public void showName() {
    	System.out.printf("%s 안녕, 나는 %s라고 해/n", yourName, name);
        
===============================================================================================
pakage polymorphism01;

public class Driver {
	public static void main(String[] args) {
    	Penguin pororo =new Penguin;
        
        pororo.name = "뽀로로";
        pororo.habitat = "남극";
        
        pororo.showName();
        pororo.showName("초보람보");
        pororo.showHabitat();
        
        Animal pingu = new Penguin();
        
        pingu.name = "핑구";
        pingu.showName();
    }
}

// 코드 출처 : 스프링 입문을 위한 자바객체지향의 원리와 이해

 

1. 다형성

다형성과 오버라이딩을 같이 놓고 볼 때 다형성의 특징은 하나의 객체가 여러 가지 타입을 가질 수 있다고 하는 특성을 의미한다. 이 경우 상속 받는 자식 클래스가 생성한 객체는 부모 클래스의 타입을 기본적으로 상속받았기 때문에 언제나 부모 클래스의 타입을 사용할 수 있다.

728x90

'자바☕' 카테고리의 다른 글

자바 표준 Annotation  (0) 2022.12.06
Dynamic Dispatch : 다형성의 일부  (0) 2022.12.02
12. 01 심화 강의 : 인터페이스  (0) 2022.12.01
Immutable vs Mutable  (0) 2022.12.01
11. 19 내부 클래스/ static vs final vs static final  (0) 2022.11.19