객체 지향 프로그래밍 객체(Object)들의 모임이 서로 협력하는 것이 객체 지향 프로그래밍이다. 이때 메시지를 사용하여 객체끼리 협력한다. 객체란 물리적으로 존재하거나 추상적으로 생각할 수 있는 것 중에서 자신의 속성을 가지고 있고, 다른 것과 식별 가능한 것을 말한다. 나는 첫 프로그래밍을 C언어로 접했기 때문에 객체 지향의 장점을 절차 지향과 비교해 예시를 들 때 이해가 잘 됐다. 어떤 프로그램이 절차 지향 방식으로 짜였다면 프로그램에 어떠한 기능을 제외하려고 할 때 그 기능과 관련된 앞뒤 코드를 살펴보고, 삭제할 기능과 연결된 부분을 수정해야 한다(이는 물론 객체 지향에서도 마찬가지이긴 하다). 그러나 절치 지향과 객체 지향은 수정해야 할 코드의 범위가 다르다. 객체 지향 방식으로 (잘) 설계했다..
인터페이스 (Interface) 인터페이스는 선언 시 interface라 선언하고, 인터페이스를 구현(상속)하는 클래스에서는 implements 키워드를 사용해 구현(상속)한다. 인터페이스는 모든 메서드가 public abstract로 선언되고, 모든 멤버 변수가 public static final로 선언된 특별한 종류의 추상 클래스이다. 메서드 선언 시 public abstract는 생략 가능하고, 멤버 변수 선언 시 public static final 또한 생략 가능하다. 인터페이스는 다른 클래스와는 달리 다중 상속이 가능하다. 💻 예제 1 📝 소스 코드 public class Main { public static void main(String[] args) { TestImpl test1 = new ..
Polymorphism (다형성) 다형성은 하나의 이름을 가진 클래스나 메서드가 여러 가지 형태의 동작을 하는 능력이다. 다형성에 의해 자손 타입 객체가 부모 타입으로 자동 형 변환이 될 수 있다. 즉, 부모 타입인 객체만으로도 상속된 모든 자손 타입들을 담을 수 있다. 클래스에서 다형성 예시로 첫 번째는 한 타입의 참조 변수로 여러 타입의 객체를 참조할 수 있는 것이다. 두 번째는 조상 클래스 타입의 참조 변수로 자손 클래스의 인스턴스를 참조할 수 있는 것이다. 메서드에서의 다형성은 메서드 오버라이딩과 메서드 오버로딩이 있다. HAS-A (멤버), IS-A (상속) HAS-A 관계 같은 경우는 멤버로 설계하고, IS-A 관계는 상속으로 설계한다. HAS-A Car is-a Tire (X) Tire is..