자바에서 상속과구성은 클래스간의 관계를 정의하는데 사용됩니다.
하지만 둘은 다른 목적과특징을 가지고 있답니다 바로 코드를 통해 보시죠!
상속
상속은 자식 클래스가 부모 클래스의 모든 멤버를 상속받는 것을 말합니다.
상속을 사용하면 코드의 중복을 줄이고 유지보수를 쉽게 할 수 있습니다. 이를 코드로 나타내면 다음과 같습니다.class Parent { private int x; public Parent(int x) { this.x = x; } public int getX() { return x; } } class Child extends Parent { private int y; public Child(int x, int y) { super(x); this.y = y; } public int getY() { return y; } } public class Main { public static void main(String[] args) { Child child = new Child(10, 20); System.out.println(child.getX()); // 10 System.out.println(child.getY()); // 20 } }위 코드에서 Parent 클래스는 x 변수와 getX() 메서드를 가지고 있습니다. Child 클래스는 Parent 클래스를 상속받고 있으므로, Parent 클래스의 모든 멤버를 상속받아 getX() 메서드를 사용할 수 있습니다.
구성
구성은 객체가 다른 객체를 포함하는 것을 말합니다. 이를 코드로 나타내면 다음과 같습니다.
class Engine { public void start() { System.out.println("Engine started."); } } class Car { private Engine engine; public Car() { this.engine = new Engine(); } public void start() { engine.start(); } } public class Main { public static void main(String[] args) { Car car = new Car(); car.start(); // "Engine started." } }위 코드에서 Car 클래스는 Engine 객체를 포함하고 있습니다. Car 클래스의 start() 메서드에서는 Engine 객체의 start() 메서드를 호출합니다. 이렇게 구성을 사용하면 클래스 간의 결합도를 낮출 수 있습니다.
상속은 코드의 재사용 성과 유지 보수에 장점을 보이지만, 클래스 간의 밀접한 관계를 형성하여 결합도를 높이는 단점이 있습니다. 반대로 구성은 클래스 간의 결합도를 낮추는 장점이 있지만, 코드의 복잡성을 높일 수 있습니다.
따라서 상속과 구성은 각각 자신의 목적과 특징을 가지고 있으며, 적합한 상황에서 적절히 사용해야 합니다.