만족은 하되 안주하지는 말자

기록해야 기억한다

자바 다형성 2

다형성: 우리는 왜 List list = new ArrayList(); 라고 쓸까?

제목의 질문은 아래로도 대치 가능합니다. 왜 우리는 인스턴스 타입을 클래스 대신 인터페이스로 초기화할까? 우리는 아래처럼 인스턴스를 생성 및 초기화해서는 안됩니다. ArrayList list = new ArrayList(); List list = new ArrayList(); 우리는 위처럼 List 인터페이스를 사용해야 합니다. 인터페이스를 구체클래스의 위에 타입으로 덧씌우는 것은 캡슐화와 낮은 결합도(loose coupling)의 핵심입니다. 나중에는 테스트코드를 작성하기도 쉬워지고 나중에 구현에 변경사항이 생겨도 변화에 쉽게 대응할 수 있습니다. 만약 나중에, 기획자가 요구사항을 바꿔서 ArrayList 가 아니라 Stack 의 기능으로 바꿔야 한다면 해줘야 하는 건 그냥 ArrayList 를 St..

[JAVA] 다형성 (상속, 오버라이딩, 업캐스팅)

다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다. -www.opentutorials.org- 다형성의 대표적인 예로는 Override 가 있다. 클래스의 부모메소드에 정의되어있는 메소드를 자식클래스의 입맛에 맞게 다양한 형태로 바꿀 수 있음을 의미한다. 자바 다형성의 예시를 확인해보자. Car 는 모든 자동차 종류의 부모 클래스다. 하위에는 자동차의 한 분류인 SUV 가 있다. Main.java class Main { public static void main(String[] args) { Car car = new Car(); Car suv = new Suv(); car.run(); suv.run(); } } Car.java public class Car { ..