목록[XiBBaL] Study/Java (20)
AiPE
객체지향에서의 인터페이스가 무엇인지에 대해 내가 들었던 자바 강의 선생님께서 좋은 설명을 해 주셔서 이를 그대로 가져왔다. "객체지향은 프로그램의 각 부분을 부품화하는 설계 방식이라고 할 수 있다."는 명제를 전제하고 읽어보자. 잘 만들어진 부품이라면 부품과 부품을 서로 교환 할 수 있어야 한다. 예를 들어보자. 집에 있는 컴퓨터에 A사의 모니터를 연결하다가 B사의 모니터를 연결 할 수 있다. 또, 집에 있던 모니터에 A사의 컴퓨터를 연결해서 사용하다가 새로운 컴퓨터를 구입하면서 B사의 컴퓨터를 연결 할 수 있다. 모니터와 컴퓨터는 서로가 교환관계에 있는 것이다.이것은 모니터와 컴퓨터를 연결하는 케이블의 규격이 표준화 되어 있기 때문에 가능한 일이다. 컴퓨터와 모니터를 만드는 업체들은 HDMI의 규격을 ..
1. 캐스팅(Casting)의 정의일반적으로 캐스팅(Casting)이란 명시적 형 변환과 동일한 용어로 쓰인다.즉, 프로그래머가 (type) 연산자를 사용하여 의도적으로 자료의 형식을 바꿀 때 이를 특별히 캐스팅이라고 한다.캐스팅은 업 캐스팅과 다운 캐스팅으로 나눌 수 있다. (명시적 형 변환과 묵시적 형 변환에 대해서는 아래 포스팅 참조)https://xibbal-lab.tistory.com/69 명시적 형 변환과 묵시적 형 변환명시적 형 변환(Explicit Type Conversion)과 묵시적 형 변환(Implicit Type Conversion)은 데이터 유형을 다른 형식으로 변환할 때의 두 가지 방법이다. 정수 데이터를 소수(float)데이터로 변환하는 등, 데이터xibbal-lab.tisto..
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..
싱글톤 패턴(Singleton Pattern)은 디자인(쉽게, 프로그램 설계라고 보면 된다) 패턴 중 하나로, 어떤 클래스가 최대 한 번의 인스턴스만을 갖도록 보장하는 패턴이다. 이는 클래스의 인스턴스를 하나만 생성하여 전역적으로 접근할 수 있도록 하는 것을 목적으로 한다. "전역적인 접근"은 무엇을 의미하는가? 전역 상태를 유지한다는 것은 프로그램의 어느 곳에서나 접근 가능한 상태를 말한다. 전역 상태를 유지하면 객체 간의 데이터 공유가 용이해지고, 설정값이나 상태 정보의 일관성을 유지할 수 있으므로 여러 곳에서 공유된 데이터나 설정값을 저장할 때 유용하다. 싱글톤 패턴을 사용하면 클래스의 인스턴스가 하나만 존재하므로, 해당 인스턴스의 상태는 어디서든 접근할 수 있게 된다. 싱글톤 패턴을 구현하는 방법..