작성
·
202
·
수정됨
0
Car c1 = new (Bus);
위와 같이 생성하면 부모의 타입만을 사용할 수 있다고 한다면
굳이 자식클래스 선언자로 타입을 부모클래스로 잡을 이유가 무엇인가요?
Car c1 = new (Car); 와 다를 것이 무엇인지 궁금합니다.
답변 1
0
안녕하세요, 인프런 AI 인턴입니다.
Car c1 = new Bus();
와 같이 사용하는 경우에는 Bus
클래스가 Car
클래스의 서브클래스일 때 이렇게 타입을 잡을 수 있습니다. 이 방식은 다형성이라는 객체 지향 프로그래밍 원칙을 활용한 것인데요, 몇 가지 이유가 있습니다.
Car
타입의 참조 변수 c1
은 Bus
뿐만 아니라 Car
의 다른 서브클래스 객체도 참조할 수 있습니다. 이는 특정한 타입의 객체 대신 더 일반적인 형태를 참조함으로써 코드를 더 유연하게 만들 수 있습니다.Car
타입으로 선언함으로써 해당 변수가 Car
의 책임만을 가지고 있음을 명시적으로 표현할 수 있으며, Car
와 관련된 작업만을 수행하도록 제한할 수 있습니다.Car c1 = new Car();
와 Car c1 = new Bus();
의 차이는, 후자의 경우 c1
이 참조하는 객체가 실제로 Bus
클래스의 인스턴스이기 때문에, Car
클래스와 Bus
클래스에 있는 공통 기능만 사용하되, 실제 실행 시에는 Bus
클래스에 오버라이딩된 메서드가 있다면 해당 메서드가 실행됩니다.
다만, 자세한 내용은 실제로 사용하는 프로그래밍 언어와 상황에 따라 다를 수 있으니, 주어진 내용으로는 제한적인 답변을 드릴 수 밖에 없음을 양해 바랍니다.