반응형
[Java Class.07] 다형성(Polymorphism)
1.다형성(Polymorphism)이란?
- 다형성이란, 사용 방법은 같지만 다양한 객체를 이용해서 다양한 실행결과가 나오도록 하는 성질입니다.
- 다형성을 구현하려면 메소드 재정의와 타입 변환이 필요합니다.
2.자동 타입(Type) 변환(promotion)
- 타입 변환이란 데이터 타입을 다른 데이터 타입으로 변환하는 것을 말한다.
- 예를 들어 byte 타입을 int 타입으로 변환하는 것이다.
- 타입 변환에는 (1)자동(묵시적) 타입 변환과 (2)강제(명시적) 타입 변환이 있다.
2.1.변수에서 타입 변환(Type conversion, casting)
- 자동(암묵적, 묵시적, implicit) 형변환: 컴파일러가 자동으로 변환
- 강제(명시적) 형변환: 사용자가 직접 괄호( ) 를 사용하여 변환
public class Main {
public static void main(String[] args) {
byte byteValue = 1;
int intValue = byteValue; // 자동 형변환 OK
char charValue = 'A';
intValue = charValue; // 자동 형변환 OK
// charValue = intValue; // 자동 형변환 NO
charValue = (char)intValue; // 강제 형변환 필요
long longValue = intValue; // 자동 현변환 OK
float floatValue = longValue; // 자동 형변환 OK
double doubleValue = floatValue; // 자동 형변환 OK
}
}
2.2.클래스에서 타입 변환
부모 클래스 변수 = 자식 클래스 타입; |
- 클래스 간의 타입 변환은 상속 관계에 있는 클래스 사이에서 발생한다.
- 자식 타입은 부모 타입으로 자동 타입 변환이 가능하다
// 부모 클래스
public class Parent {
int p1;
public void method1() {
System.out.println("Parent method1");
}
public void method2() {
System.out.println("Parent method2");
}
}
public class Child extends Parent {
int c1;
@Override
public void method1() {
System.out.println("Child method1");
}
public void method3() {
System.out.println("Child method3");
}
}
public class Main {
public static void main(String[] args) {
Child child = new child();
Parent parent = child; // 자동 타입 변환
parent.method1();
parent.mehtod2(); // override 된 메소드가 호출됨
// parent.method3(); // 에러 발생
}
}
- 부모 타입으로 자동 타입 변환된 이후에는 부모 클래스에서 선언된 필드와 메소드만 접근이 가능하다.
- 예외적으로, 메소드가 자식 클래스에서 오버라이드(Override)되었다면, 자식 클래스의 메소드가 대신 호출된다.
3.필드의 다형성
728x90
반응형
'자바(Java) > 자바 클래스' 카테고리의 다른 글
[Java Class.09]Getters & Setters (0) | 2024.03.26 |
---|---|
[Java Class.08] 메소드 오버라이드(@Override) (0) | 2024.02.25 |
[Java Class.06] 상속(Inheritance) (0) | 2024.02.23 |
[Java Class.05] Singleton & Final(싱글톤&파이널) (0) | 2024.02.23 |
[Java Class.04] Member of Instance & Static (0) | 2024.02.23 |
댓글