안녕하세요. 스마트 팩토리입니다
자바 중급 030. 다형성(polymorphism)- 부모클래스,자식클래스에 대해 알아보겠습니다.
1. 다형성
가. 다형성(polymorphism)
-여러가지 형태를 취하는 것
- 하나의 참조 변수로 여러가지 객체를 참조할 수 있는 것.
-조상의 참조변수로 자손 타입의 객체를 다룰 수 있는 것.
다형성을 설명하기 위해서는 여러가지를 알아야 하는데 하나씩 알아보면서 이해의 폭을 넓혀가보도록 하겠습니다.
<< Tv.java 부모 클래스 >>
부모클래스로
인스턴스 변수로 코드명, 제품생산량, 생산월을 가지고 있습니다. private로 되어 있어서 getter를 활용하여 접근하도록 설정하였습니다.
info 메소드를 활용하여 객체를 생성하면 해당 메소드를 실행할 수 있도록 하였습니다.
package ex05;
public class Tv {
private String code;
private int productivity;
private int month;
public Tv(String code, int productivity, int month) { --> 생성자
super();
this.code=code;
this.productivity=productivity;
this.month=month;
}
public String getCode() { --> getter
return code;
}
public int getProductivity() { --> getter
return productivity;
}
public int getMonth() { --> getter
return month;
}
public void info() {
System.out.println(" 제품 코드 :"+this.getCode());
System.out.println(" 제품 생산량 :"+this.getProductivity());
System.out.println(" 제품 생산월 :"+this.getMonth());
}
}
<< SeoulTv.java 자식 1 번 클래스 >>
자식 클래스로 부모 클래스의 생성자를 그대로 가지고 오고, 그에 자식 클래스의 멤버 변수 Area를 추가하였습니다.
오버라이딩을 통해서 부모 클래스의 info 메소드에 생산지를 추가하였습니다.
package ex05;
public class SeoulTv extends Tv {
private String Area;
public SeoulTv(String code, int productivity, int month, String area) {
super(code, productivity, month);
this.Area = area;
}
public String getArea() {
return this.Area;
}
@Override
public void info() {
super.info();
System.out.println(" 생산지 : "+this.getArea());
}
}
<< IncheonTv2.java 자식클래스2번>>
자식 클래스로 Tv 클래스를 상속 받으면 수입국지역을 변수로 만들어, 메소드에 부모의 메소드+ 수입국 을 출력하는 메소드를 오버라이딩했습니다.
package ex05;
public class IncheonTv2 extends Tv {
private String Area;
public IncheonTv2(String code, int productivity, int month, String area) {
super(code, productivity, month);
this.Area = area;
}
public String getArea() {
return this.Area;
}
@Override
public void info() {
super.info();
System.out.println(" 수입국(인천): "+this.getArea());
}
}
<<PusanTv.java 자식 클래스 3번>>
자식 클래스로 역시 수입국 지역 변수를 추가하고 오버라이딩을 통해서 출력되도록 하였습니다.
package ex05;
public class PusanTv extends Tv {
private String Area;
public PusanTv(String code, int productivity, int month, String area) {
super(code, productivity, month);
this.Area = area;
}
public String getArea() {
return this.Area;
}
@Override
public void info() {
super.info();
System.out.println(" 수입국(부산): "+this.getArea());
}
}
<<TvEx.java 메인 클래스>>
Tv t1=new Tv("A02",1000, 9);
t1.info();
객체 t1은 기본 방식대로 다형성 적용 없이 Tv클래스를 적용하여 해당 인스턴스 변수 값을 넣고 출력한 값입니다. Tv t1=new Tv("A02",1000, 9);
t1.info();
Tv t2=new IncheonTv2("B032",500,9,"china");
t2.info();
부모 클래스의 참조변수를 작성하고 자식 클래스를 객체를 접근하여 다루고 있습니다.
이것이 가능한 것이 바로 다형성입니디ㅏ.
다형성은 다양하게 접근할 수 있기 때문에 여기서는 기존에 해당 클래스만 접근하던 것과 달리 조상 클래스에서 자식클래스로 접근할 수 있다는 것을 아는게 포인트라고 할 수 있습니다.
t3, t4, 도 역시 같은 방식으로 자식 클래스로 접근하고 있습니다.
package ex05;
public class tvEx {
public static void main(String[] args) {
Tv t1=new Tv("A02",1000, 9);
t1.info();
System.out.println();
Tv t2=new IncheonTv2("B032",500,9,"china");
t2.info();
System.out.println();
Tv t3=new SeoulTv("A02",1000,9,"구로공단");
t3.info();
System.out.println();
Tv t4=new PusanTv("C051",200,9,"말레이시아");
t4.info();
}
}
'Java' 카테고리의 다른 글
자바 중급 032. 다형성(polymorphism)- instanceof연산자- 형변환 가능 여부 확인,Ctrl+T- 상속관계 확인 (0) | 2021.09.24 |
---|---|
자바 중급 031. 다형성(polymorphism)- 형 변환, 다운 캐스팅, 업캐스팅 에러 ClassCastException 해결 방법 (0) | 2021.09.23 |
자바 중급 029. 참조 변수 super 조상클래스 참조변수 (0) | 2021.09.14 |
자바 중급 028. 오버라이딩(overriding) 조건-재정의- Object 클래스 toStirng ()메소드 (0) | 2021.09.13 |
자바 중급 027. 오버라이딩(overriding)-재정의 (0) | 2021.09.12 |
댓글