TIL#13-2

DuBu·2023년 6월 26일
0

일본IT JAVA 연수과정

목록 보기
22/61
post-thumbnail

클래스의 상속(inheritance)

  • 상속 : 연관된 일련의 클래스들에 대해 공통적인 규약을 정의할 수 있습니다.
  • UML 표현: ⬆️

단일 상속만 지원하는 Java

  • Java는 다중 상속을 지원하지 않는다.
  • 한 클래스에서 상속할 수 있는 최대 클래스의 수는 한 개이다.

상속 관계에 놓은 두 대상의 관찰

  • 상속의 특성
    • 하위 클래스는 상위 클래스의 모든 특성을 지닌다.
    • 거기에 더하여 하위 클래스는 자신만의 추가적인 특성을 더하게 된다.
    MobilePhone을 SmartPhone이 상속한다.
    class SmartPhone extends MobilePhone{...}
  • 상속은 Is-a 관계이고, 상속 관계에 있는 두 대상은 Is-a 여야 한다.
    • Is-a 관계를 갖지 않는 두 클래스가 상속으로 연결되어 있다면, 적절한 상속인지 의심해야 한다.

has-a 와 is-a의 차이

// is a 
class Notebook extends Computer{
}
//has a
class Computer {
 Memory SSD;
}

TV class를 상속하여 ColorTV, IPTV를 생성하고 결과를 출력하시오.

public class Main {

	public static void main(String[] args) {
		ColorTV myTV = new ColorTV(32, 1024);
		myTV.printProperty();
		IPTV iptv = new IPTV("192.1.1.2", 32, 2048); // "192.1.1.2" 주소에 32인치, 2048컬러
		iptv.printProperty();
	}

}

class TV {
	private int size;

	public TV(int size) {
		this.size = size;
	}

	public int getSize() {
		return size;
	}
}

class ColorTV extends TV {
	private int color;

	ColorTV(int size, int color) {
		super(size);

		this.color = color;
	}

	public void printProperty() {
		System.out.println(super.getSize() + " inch " + color + " color");
	}
}

class IPTV extends ColorTV {
	private String address;

	IPTV(String address, int size, int color) {
		super(size, color);
		this.address = address;
	}

	public void printProperty() {
		System.out.print('"' + address + '"' + " 주소에 ");
		super.printProperty();
	}
}

다형성(Polymorphism)

  • 다형성은 객체 지향 프로그래밍의 중요한 개념 중 하나입니다. 이 개념은 한 가지 형태나 타입의 객체가 다양한 방식으로 동작할 수 있는 능력을 의미합니다.

자바에서 다형성은 클래스들 간의 상속과 인터페이스 구현을 통해 구현됩니다. 한 클래스가 다른 클래스를 상속하거나 인터페이스를 구현할 때, 그 클래스는 상속받은 클래스나 인터페이스의 메서드를 오버라이딩하고 새로운 동작을 정의할 수 있습니다.

예를 들어, 동물을 나타내는 Animal 클래스가 있고, 이를 상속받아 각각의 동물을 나타내는 Dog, Cat, Bird 클래스가 있다고 가정해봅시다. 이들 클래스는 Animal 클래스의 메서드를 오버라이딩하여 각 동물의 특징과 동작을 정의할 수 있습니다. 그리고 다형성을 통해 Animal 타입의 변수를 사용하여 Dog, Cat, Bird 객체를 다룰 수 있습니다.

이러한 다형성은 유연성확장성을 제공합니다. 다형성을 사용하면 같은 코드에서 다양한 타입의 객체를 처리할 수 있으며, 코드의 재사용성을 높일 수 있습니다. 또한, 다형성은 상속과 인터페이스를 통해 설계된 계층적인 구조에서 객체들 간의 관계를 명확하게 표현할 수 있습니다.
이를 통해 코드의 가독성과 유지보수성을 향상시킬 수 있으며, 소프트웨어 개발에서 객체 지향적인 설계와 구현을 도와줍니다.

0개의 댓글