다형성의 기본 개념정의다형성이란 '많은 형태를 가질 수 있는 능력'을 의미한다. Java에서 다형성은 한 객체가 여러 타입의 인스턴스로 행동할 수 있게 하는 특성을 말한다. 이는 주로 상속과 인터페이스를 통해 구현된다. (+현업에서는 상속보다는 인터페이스를 통해서 다형성을 구현하는 경우가 더 많다.)타입의 호환성Java에서 하위 클래스의 객체는 상위 클래스 타입으로 선언될 수 있다. 이는 상위 클래스 타입의 참조 변수가 하위 클래스의 인스턴스를 참조할 수 있음을 의미한다. 다형성의 장점코드의 유연성같은 코드 라인이 여러 타입의 객체에 대해 다른 동작을 수행할 수 있으므로, 객체를 다양한 상황에서 더 유연하게 사용할 수 있다. (제네릭, 형변환도 다형성이 확장된 개념이다.)다형성의 구현 다형성을 구현하기 ..
이론/OOP
A is B.상속의 기본 개념정의 상속은 한 클래스(부모 클래스 또는 슈퍼클래스)의 속성과 메서드를 다른 클래스(자식 클래스 또는 서브클래스)가 이어받는 것을 말한다. 이를 통해 자식 클래스는 부모 클래스의 모든 기능을 사용할 수 있으며, 필요에 따라 추가적인 기능을 구현하거나 기존 기능을 재정의(Override)할 수 있다재사용성 상속은 코드의 재사용성을 높인다. 공통적인 기능을 부모 클래스에 정의하고, 이를 여러 자식 클래스에서 확장하여 사용할 수 있다. 상속의 장점코드 재사용기존 클래스의 코드를 재사용하여 새로운 클래스를 생성할 수 있다. 이는 개발 시간을 단축시키고, 코드의 중복을 방지한다. 유지보수의 용이성공통된 기능이 부모 클래스에 중앙집중화되어 있기 때문에, 수정이 필요할 경우 한 곳에서만 ..
캡슐화의 기본 개념 정의캡슐화는 객체의 데이터(상태)와 그 데이터를 조작하는 메서드(행위)를 하나의 단위로 묶는 것을 의미한다. 이를 통해 데이터와 메서드가 서로 밀접하게 연관되며, 객체의 내부 구현은 외부로부터 숨겨진다.정보 은닉(information hiding)객체의 내부 상태는 외부에서 직접 접근할 수 없도록 숨겨지며, 오직 객체가 제공하는 메서드를 통해서만 조작될 수 있다.이로 인해 내부의 구현은 감추고 한 모듈 내에서의 응집도(얼마나 관련성이 높은 책임들이 할당되었는지)를 높여 외부로의 노출을 최소화한다. 이로 인해 코드의 유연성과 유지보수성을 높일 수 있다.(정보 은닉은 캡슐화로부터 파생된 보조 개념이다. 캡슐화 = 정보 은닉은 아니다.)캡슐화의 목적과 장점 유지보수성객체의 내부 구현이 외부..
절차적 프로그래밍객체 지향 프로그래밍(OOP)의 등장 이전의 프로그래밍 패러다임은 절차적 프로그래밍이었다.흔히들 OOP의 반대가 절차적 프로그래밍이라고 생각을 하는데, 이는 틀린 사실이다. 절차적 프로그래밍의 프로시저가 OOP의 메서드로 확장된 것에 가깝기에, 완전히 일치한다고 볼 수는 없어도 서로 공유하는 부분이 차이보다는 더 많다. 그럼에도 불구하고 왜 OOP가 등장하였냐 하면, 절차적 프로그래밍은 데이터를 구조화 하지 못하는 한계가 있었기 때문이다. 절차적 프로그래밍에서는 데이터가 종종 전역 변수로 선언되어 사용되었는데, 이는 다양한 함수들이 동일한 데이터에 접근하고 수정할 수 있음을 의미했다. OOP의 관점에서 보면, "메서드1" 에서 사용되는 전역 변수 "변수1" 이 아무 관련도 없는 생뚱맞은..