추상화
추상화란 불필요한 정보를 숨기고 중요한 정보만을 나타내는 것을 의미
추상화 사용의 장점
- 객체 간의 복잡성이 줄어듦
- 코드의 중복을 막고 재사용성을 높일 수 있음
- 사용자에게 중요한 세부 정보만 제공하므로 응용 프로그램이나 프로그램의 보안에 도움이 됨
추상화는 추상 클래스 또는 인터페이스를 통해 구현할 수 있음
추상 클래스와 인터페이스
추상 클래스: 하나 이상의 추상 메서드가 포함된 클래스로 객체간 공통적 속성을 추출한 클래스
인터페이스: 모든 메서드가 추상메서드로 이루어져 있는 것으로 인터페이스에서 기능에 대한 기준을 정의함
추상클래스와 인터페이스 공통점
- new 키워드를 사용하여 객체를 생성하는 것이 불가능하고 추상클래스를 extends 받거나 인터페이스를 implements 받은 하위 클래스는 반드시 상위 클래스의 추상 메서드를 구현해 주어야 함
추상클래스와 인터페이스의 차이점
- 추상 클래스에선 생성자, 멤버 변수, 일반 메서드, 추상 메서드 모두 가질 수 있지만 인터페이스에선 추상 메서드와 상수만 가질 수 있음
- 추상 클래스는 다중 상속이 지원되지 않지만 인터페이스는 다중 상속이 지원됨
- 추상 클래스는 구체적인(일반) 클래스 또는 추상 클래스를 상속할 수 있지만 인터페이스는 다른 인터페이스만 상속 가능
[사용 이유]
- 추상 클래스
- 객체의 필드와 메서드 이름을 통일하여 유지 보수성을 높이고 통일성을 높이기 위해 사용함
- 인터페이스
- 완전한 추상화 구현 가능
- 다중 상속 구현 가능
- 느슨한 결합 관계를 구현하여 클래스간 의존성을 줄여 유지 보수성을 높일 수 있음
[강한 결합과 느슨한 결합]
- 강한 결합: 클래스간 의존성이 강해 한 클래스 내부 코드를 수정하면 연관된 클래스의 내부 코드도 변경해야 해서 유지 보수성이 좋지 않음
- 느슨한 결합: 클래스간 의존성이 약해 한 클래스의 내부 코드를 수정하더라고 연관된 클래스의 코드는 수정하지 않아도 돼 유지 보수성이 좋음
★ 추상 클래스와 인터페이스는 다형성을 구현하는 것
다형성
- 다형성이란 사용 방법은 동일하지만 실행 결과가 다양하게 나오는 성질
- 다형성을 구현하기 위해서는 자동 타입 변환과 메서드 오버라이딩이 필요
[자동 타입 변환(Promotion)과 강제 타입 변환(Casting)]
자동 타입 변환
- 값의 허용 범위가 작은 타입이 허용 범위가 큰 타입으로 대입될 때 발생
- 정수 타입이 실수 타입으로 대입되면 무조건 자동 타입 변환이 됨
byte < short, char < int < long < float < double
강제 타입 변환
- 큰 허용 버위 타입을 작은 허용 범위 타입으로 쪼개어서 저장하는 것
[메서드 오버라이딩과 메서드 오버로딩]
- 메서드 오버라이딩: 상위 클래스의 메서드를 하위 클래스에서 재정의 함
- 메서드 오버로딩: 메서드명만 같을 뿐 메서드에 전달되는 매개변수의 자료형 또는 개수가 다른 함수를 정의함
'JAVA' 카테고리의 다른 글
데이터베이스 프로그래밍 (0) | 2024.02.02 |
---|---|
스레드 풀 (0) | 2024.02.01 |
자바 네트워크 (0) | 2024.01.31 |
데이터 입출력 (0) | 2024.01.31 |
객체지향 프로그래밍 (0) | 2024.01.04 |