JAVA class, inheritance, polymorphism (230626)

이원건·2023년 6월 26일
0

JAVA

목록 보기
19/33
post-thumbnail

1. 아래 문제를 푸시오.

  • 문제
    [1번] 다음 main() 메소드와 실행 결과를 참고하여 TV를 상속받은 ColorTV 클래스를 작성하라.
class TV{
	private int size;
	public TV(int size) { this.size = size; }
	public int getSize() { return size; }
}
public static void main(String[] args) {
	ColorTV myTV = new ColorTV(32, 1024);
	myTV.printProperty();
}
  • 실행결과
32인치 1024컬러
  • 코드
class TV{
	private int size;
	
	public TV(int size) {
		this.size = size;
	}
	
	public int getSize() {
		return size;
	}
}

class ColorTV extends TV{
	
	private int color;
	
	public ColorTV(int size, int color) {
		super(size);
		this.color = color;
	}

	public void printProperty() {
		System.out.println(super.getSize() +"인치 "+ color+"컬러");
	}
}

public class TVMain {
	public static void main(String[] args) {
		ColorTV myTV = new ColorTV(32, 1024);
		myTV.printProperty();
	}
}
  • 결과
32인치 1024컬러

2. 아래 문제를 푸시오.

  • 문제
    [2번] 다음 main() 메소드와 실행 결과를 참고하여 ColorTV를 상속받는 IPTV 클래스를 작성하라.
public static void main(String[] args) {
	IPTV iptv = new IPTV("192.1.1.2", 32, 2048); //"192.1.1.2" 주소에 32인치, 2048컬러
	iptv.printProperty();
}
  • 실행결과
나의 IPTV는 192.1.1.2 주소의 32인치 2048컬러
  • 코드
class TV{
	private int size;
	
	public TV(int size) {
		this.size = size;
	}
	
	public int getSize() {
		return size;
	}
}

class ColorTV extends TV{
	private int color;
	
	public ColorTV(int size, int color) {
		super(size);
		this.color = color;
	}

	public void printProperty() {
		System.out.println(super.getSize() +"인치 "+ color+"컬러");
	}
}

class IPTV extends ColorTV{
	private String address;

	public IPTV(String address, int size, int color) {
		super(size, color);
		this.address = address;
	}
	
	@Override
	public void printProperty() {
		System.out.print("나의 IPTV는 "  + address + " 주소의 ");
		super.printProperty();  
	}
}

public class TVMain {
	public static void main(String[] args) {
		
		IPTV ipTV = new IPTV("192.1.1.2", 32, 2048);
		ipTV.printProperty();
	}
}
  • 결과
나의 IPTV는 192.1.1.2 주소의 32인치 2048컬러

3. has-a와 is-a의 차이는?

  • is-a는 상속관계.. A is a B 일 때 A는 B의 자식이다.
  • 나머지는 모두 has-A 관계로, 상속이 아닌 클래스 내부에 field(instance variables, class variables)로 포함되어 사용될 수 있다.

4. 다형성을 예습하시오.

다형성(polymorphism)이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미합니다.

자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를 참조할 수 있도록 하여 구현하고 있습니다.

다형성은 상속, 추상화와 더불어 객체 지향 프로그래밍을 구성하는 중요한 특징 중 하나입니다

  • 부모클래스 타입 변수에 자식클래스 객체를 생성해 대입하면 부모에 해당하는 메모리 영역(field, method)에만 접근이 가능하여 여러 클래스에서 같은 부모class를 상속(또는 interface를 구현)하여 공통적으로 사용하기 쉽게 구현하는 방식. 이것을 성질로 나타낸 것이 다형성.

0개의 댓글