목록메서드 (5)
AiPE
객체지향에서의 인터페이스가 무엇인지에 대해 내가 들었던 자바 강의 선생님께서 좋은 설명을 해 주셔서 이를 그대로 가져왔다. "객체지향은 프로그램의 각 부분을 부품화하는 설계 방식이라고 할 수 있다."는 명제를 전제하고 읽어보자. 잘 만들어진 부품이라면 부품과 부품을 서로 교환 할 수 있어야 한다. 예를 들어보자. 집에 있는 컴퓨터에 A사의 모니터를 연결하다가 B사의 모니터를 연결 할 수 있다. 또, 집에 있던 모니터에 A사의 컴퓨터를 연결해서 사용하다가 새로운 컴퓨터를 구입하면서 B사의 컴퓨터를 연결 할 수 있다. 모니터와 컴퓨터는 서로가 교환관계에 있는 것이다.이것은 모니터와 컴퓨터를 연결하는 케이블의 규격이 표준화 되어 있기 때문에 가능한 일이다. 컴퓨터와 모니터를 만드는 업체들은 HDMI의 규격을 ..
1. 추상 클래스(Abstract Class)와 추상 메서드(Abstract Method)의 정의 추상 클래스(Abstract Class)는 하나 이상의 추상 메서드(Abstract Method)를 포함하는 클래스이다. 추상 메서드는 선언만 되어 있고 구현이 되어 있지 않은 메서드를 말한다. 쉽게, "응 난 이런 메서드를 만들었어." "그래서 이 메서드가 무슨 기능인데?" "(아직) 없어" 이 상태라는 것이다. 따라서 추상 메서드는 당연하게도 직접 인스턴스화 할 수 없다. (기능이 없어 실행하라고 해도 뭘 실행해야 할지 모른다.) 추상 메서드를 인스턴스화(구현)하려면 해당 추상 메서드를 구현하는 하위 클래스를 만들어야 한다. 즉, 해당 추상 메서드를 설명해주는 하위 클래스 및 메서드들이 있어야 한다. 그..
다형성(Polymorphism)은 객체지향 프로그래밍의 핵심 개념 중 하나이다. 다형성은 한 가지 인터페이스나 부모 클래스를 여러 가지 형태로 구현하거나 확장할 수 있는 능력을 의미한다. 즉, 쉽게 말하면 "하나를 만들면 그걸 얼마나 여러 군데에 살짝씩 바꾸어 써먹을 수 있냐"는 의미이다. 말 그대로 "많은 형태를 가질 수 있는 속성"이다. 따라서, 다형성이 높으면 코드의 재사용성이 높으며 효율적인 프로그래밍이 가능해진다. 다형성은 크게 "메서드 다형성(Method Polymorphism)"과 "객체 다형성(Object Polymorphism)"의 두 가지로 나뉜다. 1. 메서드 다형성(Method Polymorphism) 부모 클래스(혹은 인터페이스)로부터 비롯된 다양한 자식 클래스들을 사용할 수 있는..
Java에서의 final 키워드는 클래스, 메서드, 변수 앞에서 사용될 수 있다. 공통적으로 "~~가 불가하다"는 의미를 나타내지만, 어디 앞에 쓰이느냐에 따라 약간의 의미 차이를 보인다. 1. 클래스 앞에서 사용되는 경우 해당 클래스가 상속될 수 없다는 것을 의미한다. 이는 클래스가 확장될 필요가 없거나, 확장될 경우 원치 않는 동작을 방지하려는 경우에 유용하다. Ex. 협업을 하거나 대규모 프로젝트를 개발할 때 .. 개발자 A는 임의의 클래스가 다른 클래스에 의해 확장되거나 상속되지 않기를 바랄 수 있다. 클래스 A를 상속하는 클래스가 많아지면 예기치 않은 오작동이 발생할 수도 있기 때문이다. 혹은, 개발자 A 이외의 다른 개발자들이 이 클래스를 상속하는 것을 원치 않을 수 있다. 이러한 경우에도 f..
클래스의 속성에 접근하고 값을 다루기 위한 메서드인 Getter와 Setter에 대해 알아보자. Getter와 Setter는 객체지향 프로그래밍에서 클래스의 속성(필드)에 접근하고 값을 설정하기 위한 메서드이다. 주로 캡슐화(encapsulation)를 구현하는 데 사용된다. 캡슐화(encapsulation)란? 서로 연관된 데이터와 그 데이터를 다루는 메서드들을 하나로 묶는 행위이다. 이를 통해 캡슐 내의 세부적인 처리과정과 데이터를 숨길 수 있게 된다. 1. Getter 메서드 Getter는 클래스의 필드 값을 반환하는 메서드이다. 클래스의 필드 값이란? 클래스 내에 있는 변수를 의미한다. 클래스 A내에 변수 b, c, d .. 가 존재한다면, b는 A의 필드 값 중 하나가 된다. 단, 클래스 A 내..