객체 지향
추상화
간단한 개념으로 일반화하는 과정을 말한다.
상속
객체들 간의 관계를 구축하는 방법을 말한다. 추상화를 통해 분리한 추상 개념들을 서로 잇는 것을 상속이라고 말한다.
즉, 상위 클래스의 속성(변수)와 기능(메서드)을 재사용하여(상속) 하위 클래스가 전부 물려받는 것을 말한다.
extends 키워드를 상속 받을 클래스에 명시하여 사용한다.
interface
일종의 추상 클래스이다. 추상 클래스처럼 추상 메서드를 갖지만 추상화 정도가 보다 높아 추상 클래스와 달리 일반 메서드 또는 멤버 변수를 구성원으로 가질 수 없고 오직 추상 메서드와 상수만을 가진다.
추상 클래스를 부분적으로만 완성된 '미완성 설계도'라고 한다면, 인터페이스는 밑그림만 그려진 '기본 설계도'라 할 수 있다.
interface 키워드를 사용하며 접근 제어자로 클래스처럼 public 또는 default만 허용한다.
다형성
하나의 인터페이스나 부모 클래스를 통해 여러 형태의 객체를 사용할 수 있는 객체 지향 프로그래밍의 특징입니다. 이를 통해 유연한 코드 작성이 가능하며, 유지보수성과 확장성이 향상됩니다.
오버라이딩(Overriding)과 오버로딩(Overloading)
오버라이딩은 부모 클래스(상위 클래스)로부터 상속받은 메서드를 자식 클래스(하위 클래스)에서 재정의해서 사용하는 것을 뜻한다. 부모 클래스에 정의된 함수일지라도 자식 클래스에서 동일한 return, 동일한 이름, 동일한 접근 제어자로 오버라이딩하여 그 기능을 사용할 수 있다.
주의해야할 점은 자식 클래스에서 재정의하는 메서드의 접근 제어자는 부모 클래스의 메서드보다 좁게 설정할 수 없다. 또한, 자식 클래스에서 예외는 부모 클래스보다 더 큰 범위의 예외를 선언할 수 없다.
오버로딩은 하나의 클래스에 같은 이름의 함수(메서드)를 여러 개 정의하고, 매개 변수의 유형과 개수를 다르게 하여 사용하는 것을 뜻한다.
instanceof 키워드
객체가 특정 클래스의 인스턴스인지 확인하는 데 사용된다. 이는 다형성 환경에서 객체 타입을 확인하거나 캐스팅 전에 안전성을 보장하는데 유용하다.
단, 구체적인 객체 타입을 명시적으로 드러내야하기 때문에 추상화와 캡슐화가 깨진다는 단점이 있다. 이는 객체 지향 프로그래밍의 기본 원칙인 추상화와 캡슐화를 위반하는 것이다.
참고 자료
https://ksh-coding.tistory.com/84
'프로그래밍 언어 > Java' 카테고리의 다른 글
자바 스터디 1주차 (1) (1) | 2025.01.03 |
---|
댓글