JAVA Programming/JAVA 개념 정리

JAVA 상속과 다형성

psy_er 2021. 12. 1. 00:31
728x90

JAVA 상속과 다형성

 

다형성 : 다양한 형태가 존재한다. 단순하게 만들어 준다는 뜻

활용 : 다양한 참조 변수를 가지는 객체의 배열, 여러 종류의 매개변수 받기

 

업 캐스팅 : 허용 O, 자동으로 형 변환시켜준다

Person P = new UnivStudent();
Person P = (Person)(new UnivStudent()); // 자동 실행

 

다운 캐스팅 : 허용 X, 업 캐스팅 후 다운 캐스팅만 허용한다

즉, 원래 내 타입으로 돌아오는 것만 허용한다

 

 

<주의>

 

-instanceof 연산자로 타입 확인하기

-object 클래스는 모든 클래스의 super 클래스로, 모든 객체를 가리킬 수 있다.

-자식 객체의 상속받지 않은 멤버에 접근하기 위해서는 반드시 다운 캐스팅되어야 한다.

 

<Person 상위 클래스>

public class Person{
	
    protected int age;
    protected String name;
    
    public Person (String name, int age){
    	this.age = age;
        this.name = name;
    }
    void WhatYourName(){
    	System.out.println(age + "세");
    }
    public boolean equals(Object obj){ // super 클래스 Object 자료형의 매개변수
    	boolean result = false;
        if(obj != null && obj instanceof Person){ // obj가 Person 자료형이면
        	Person P = (Person) obj; // 원래 자신의 자료형으로 다운캐스팅
            if((age == p.age) && name.equals(p.name)) // 이름과 나이가 같으면
            	result = true;
        }
        return result;
    }
    
}

 

<UnivStudent 하위 클래스>

public class UnivStudent extends Person{

	protected String major;
    
    public UnivStudent(String name, int age, String major){
    	super(name,age);
        this.major = major;
    }
    void WhoAreYou(){
    	WhatYourName();
        HowOldAreYou();
        
        System.out.println(major + "전공");
    }
}
728x90