본문 바로가기
Java

자바 중급 035. 다형성 예제 2)- 부모 객체 의 참조변수로 자식의 객체 접근

by Smart Factory in 2020 2021. 9. 27.
728x90
반응형

안녕하세요. 스마트 팩토리입니다. 
자바 중급 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();
    
}

}
728x90
반응형

댓글