** 자기 공부용 및 암기용으로 포스팅하는 글 입니다.
** 정확한 정보는 보장 할 수 없으니, 참고용으로만 봐주시면 감사하겠습니다.
** 제 개인적인 생각 및 자기 암시목적으로 작성되기에 이점 양해 부탁드립니다.
들어가기에 앞서..
객체지향 프로그래밍 설계를 지탱하는 핵심적인 4가지의 기둥이 존재한다.
그것은 상속/캡슐화/추상화/다형성 이다.
그 중에 세 번째인 추상화에 관하여 배워 보도록하자.
★ 알아볼 내용
1. 추상화 개념
2. abstract 제어자
3. final 키워드
내용 설명
1. 추상화 개념
사전적 의미로는 사물이나 표상을 어떤 성질, 공통성, 본질에 착안하여 그것을 추철하여 파악하는 것이다.
이전에 공부한 상속이 하위 클래스를 정의하는데 상위 클래스를 사용하는 것이었다면, 추상화는 기존 클래스들의 공통적인 요소들을 뽑아서 상위 클래스를 만들어 내는 것이다.
예시는 아래와 같다.
이렇게 공통적인 속성과 기능을 모아서 정의해 주면 코드의 중복을 줄일 수 있고, 보다 효과적으로 클래스 간의 관계를 설정할 수 있으며, 유지/보수가 용이해 진다.
2. abstract 제어자
주로 클래스와 메서드를 형용하는 키워드로 사용되며, 메서드 앞에 붙은 경우를 '추상 메서드'
클래스 앞에 붙은 경우를 '추상 클래스'리고 불리운다. 또한 어떤 클래스에 추상 메서드가 포함되어 있는 경우에도 해당 클래스는 자동으로 추상 클래스가 된다.
1) 추상 클래스
추상 클래스란, 메서드 시그니처만 존재하고 바디가 선언되어 있지 않는 추상 메서드를 포함하는 미완성 설계도이다.
미완성된 클래스를 만들어 사용하는 이유는
상속 관계에 있어 새로운 클래스를 작성하는데 유용하고, 상황 변화에 따라 유연하게 대응할 수 있기 때문이다.
이때 추상 클래스를 사용하기 위해서 우리는 상속 관련하여 학습했던 내용중 오버라이딩을 사용하게 된다.
abstract class Animal {
public String kind;
public abstract void sound();
}
class Dog extends Animal { // Animal 클래스로부터 상속
public Dog() {
this.kind = "포유류";
}
public void sound() { // 메서드 오버라이딩 -> 구현부 완성
System.out.println("멍멍");
}
}
class Cat extends Animal { // Animal 클래스로부터 상속
public Cat() {
this.kind = "포유류";
}
public void sound() { // 메서드 오버라이딩 -> 구현부 완성
System.out.println("야옹");
}
}
class DogExample {
public static void main(String[] args) throws Exception {
Animal dog = new Dog();
dog.sound();
Cat cat = new Cat();
cat.sound();
}
}
// 출력값
멍멍
야옹
3. final 키워드
final 은 최종의 마지막의 라는 사전적 의미를 가지고 있으며 해당 키워드는 클래스/메서드/변수에 붙여 사용할 수 있다.
어디에 붙는지에 따라 의미하는 바가 다르기에 확인하도록 하자.
위치 | 의미 |
클래스 | 변경 또는 확장 불가능한 클래스, 상속 불가능 |
메서드 | 오버라이딩이 불가능함 |
변수 | 값 변경이 불가능한 상수 |
'JAVA 지식 및 공부' 카테고리의 다른 글
[JAVA] Collection : Iterator (0) | 2024.06.15 |
---|---|
[JAVA] 객체지향 프로그래밍 : 다형성 (1) | 2024.06.11 |
[JAVA] 객체지향 프로그래밍 : 캡슐화 (0) | 2024.06.09 |
[JAVA] 객체지향 프로그래밍 : 상속 (1) | 2024.06.07 |
[JAVA] StringTokenizer & StringBuilder & StringBuffer (0) | 2024.06.06 |