2022. 8. 30. 19:06ㆍJava 프로그램
다형성이란 같은 타입이지만 실행 결과가 다양한 객체의 대입이 가능한 성질을 뜻합니다. 예를 들면 같은 자동차 안에서의 타이어들은 타이어 종류에 따라 다른 성능을 낼 수 있다.
[자동 타입 변환] (Promotion)
프로그램 실행 도중에 자동 타입 변환이 일어나는 것을 뜻합니다.
부모 클래스 변수 = 자식클래스타입; ===> Promotion
ex)
Cat cat = new Cat();
Animal animal = cat; ====> Promotion
[강제 타입 변환] (Casting)
자식 타입을 부모 타입으로 자동 변환 후 , 다시 자식 타입으로 변환할 때
자식 타입에 선언된 필드와 메소드를 다시 사용해야할 경우 사용합니다.
자식클래스 변수 = (자식클래스) 부모클래스타입;
강제 타입 변환은 확인이 필요합니다. 여기서 쓰이는 문법인 (부모 instanceof 자식)
public void method(Parent parent){
if(parent instanceof Child){
Child child = (Child) parent;
}
}
[추상클래스]
추상클래스는 실체들 간에 공통되는 특성을 추출한 것이라고 할 수 있습니다.
예)
1. 새,곤충,물고기 ==> 동물(추상)
2. 버스,트럭, 중형차, 자전거, 오토바이 ===> 탈것(추상)
추상클래스는 실체 클래스들의 공통되는 필드와 메소드를 정의한 클래스입니다. 추상클래스를 사용하면 그저 필요하다면 추가적인 필드와 메소드만 추가하면 되기 때문에 시간절약성이 탁월합니다.
<선언>
public abstract class 클래스명{
//필드
//생성자
//메소드
}
동물의 추상 메소드의 예시 및 오버라이드 사용의 코드를 작성해 보겠습니다.
public abstract class Animal{
public abstract void sound(); //동물의 추상클래스와 소리의 추상 메소드
}
위는 추상클래스중 동물을 추상, 소리를 추상 메소로 만들었습니다.
public class Dog extends Animal { //부모클래스를 추상클래스인 Animal
@Override
public void sound(){ //동물중 강아지의 실체를 가진 자식클래스 Dog
System.out.println("왈왈");
}
}
강아지 실체 구현
public class Cat extends Animal { // 부모클래스가 추상클래스인 Animal
@Override
public void sound(){ // 고양이의 실체 구현
System.out.println("야옹");
}
}
고양이를 구현한 클래스
오버라이드함으로써 각각 생성자를 만들고 실행한다면 Dog의 sound메소드는 왈왈, Cat의 sound 메소드는 야옹 출력 결과가 나올것입니다.
감사합니다.
'Java 프로그램' 카테고리의 다른 글
예외처리(Exception) (2) | 2022.09.20 |
---|---|
인터페이스(interface) (0) | 2022.08.30 |
상속 (클래스 상속)/ @Override (0) | 2022.08.30 |
Class(클래스) (0) | 2022.08.30 |
메소드 (0) | 2022.08.24 |