안녕하세요. 스마트 팩토리입니다.
자바 중급 035. 다형성 예제 2)- 부모 객체 의 참조변수로 자식의 객체 접근에 대해 알아보겠습니다.
1. 다형성 예제 2
가. 다형성
- 여러가지 형태를 취할 수 있는 능력
- 하나의 참조변수로 여러 타입의 객체를 참조하는 것
-부모의 참조 변수로 자식 타입의 객체를 다룰 수 있는 것
나. <<PlayerEx2.java 실행 클래스>>
Player 부모 클래스, Audioplayer 자식 클래스를 파일 한곳에 작성하였습니다.
Player p2=new Audioplayer();
이 부분이 다형성을 적용한 부분입니다.
부모 객체로 자식 타입을 접근할 수 있습니다.
이는 멤버 변수는 부문 객체의 멤버만 다룰 수 있고 오버라이딩시에는 자식 클래스의 메서드를 적용되게됩니다.
<<실행값>>
package ch06다형성;
class Player{
boolean power;
int C_channel;
String country;
public void power() {this.power=!power;
System.out.println(this.power);};
public void play() {
System.out.println("play 합니다. ");
};
public void stop() {
System.out.println(" 정지합니다.");
};
}
class Audioplayer extends Player{
int Netnumber;
String localArea;
@Override
public void power() {
super.power();
System.out.println(" Audioplay 전원 켭니다.");
}
@Override
public void play() {
super.play();
System.out.println("Audio play 합니다. ");
}
@Override
public void stop() {
super.stop();
System.out.println(" Audio 정지합니다.");
}
}
public class PlayeEx2 {
public static void main(String[] args) {
Player p1=new Player(); -->객체 생성 됨
p1.power(); --> true
p1.play(); -->play 합니다.
p1.stop(); --> 정지합니다.
Player p2=new Audioplayer(); -->다형성 적용
p2.power(); --> true
p2.play(); --> play 합니다. Audioplay합니다.
p2.stop(); --> 정지합니다. Audioplay 합니다.
}
}
다. <<PlayerEx2.java 실행 클래스>> ~ 파일 분리
Player 부모 클래스, Audioplayer 자식 클래스. PlayerEx2.java 클래스를 분리해 보겠습니다.
<<부모 클래스 Player.java 클래스>>
부모 클래스 멤버 수
6개
<<자식클래스 Audioplayer.java 클래스 >>
<< PlayerEx2.java 클래스 >>
<< PlayerEx2.java>>
부모 객체 p3와 p4 를 비교해보면 결과적으로 동일한 것을 알 수 있습니다.
둘다 부모 객체로 자식 클래스 객체를 접근할 수 있습니다. 이를 다형성 이라고 합니다.
Player p3=new Player();
Audioplayer ap=new Audioplayer();
p3=ap;
Player p4=new Audioplayer(); --> 이렇게 적용할 수 있는 것이 다형성이고 이때 접근할 수 있는 멤버의 수는 부모클래스의 멤버 만입니다. 물론 오버라이딩시 자식 클래스의 메소드에 접근됩니다.
package ch06다형성;
public class PlayerEx2 {
public static void main(String[] args) {
Player p3=new Player();
Audioplayer ap=new Audioplayer();
p3=ap; --> 형변환
p3.power();
p3.play();
p3.stop();
System.out.println("~~~~~~~~~~");
Player p4=new Audioplayer(); ---> 이 방법이 많이 사용됩니다.
p4.power();
p4.play();
p4.stop();
}
}
댓글