자바 추상화 Abstract

Rudy·2023년 4월 19일
0

자바에서 추상화를 사용하는이유

객체 지향 프로그래밍에서 추상 클래스 및 인터페이스를 통해 구현할 수 있는 일반화된 개념을 나타내기 위해서입니다. 추상화는 구현 세부 정보를 숨기고, 핵심적인 기능을 강조하는데 사용됩니다. 추상화를 통해 소프트웨어 시스템을 더 유연하게 만들 수 있으며, 코드의 가독성 및 유지 보수성을 향상시킵니다.

예를 들어, 동물 클래스를 생성하고 싶다고 가정해보겠습니다. 동물 클래스는 다양한 서브 클래스들을 가지며, 이 서브 클래스들은 모두 공통적인 속성과 기능을 가지고 있습니다. 이때, 추상 클래스를 사용하여 동물 클래스를 정의할 수 있습니다. 추상 클래스는 공통적인 속성과 기능을 가지는데, 서브 클래스에서 이를 구체화하게 됩니다.

public abstract class Animal {
   private String name;

   public Animal(String name) {
       this.name = name;
   }

   public abstract void move();
   public abstract void eat();

   public String getName() {
       return name;
   }

   public void setName(String name) {
       this.name = name;
   }
}

위의 코드에서 Animal 클래스는 추상 클래스로 정의되어 있습니다. move()와 eat() 메서드는 추상 메서드로 정의되어 있으며, 이 메서드들은 서브 클래스에서 구체화됩니다. 또한, Animal 클래스는 name 필드와 getName()/setName() 메서드를 가지고 있습니다. 이 메서드들은 모든 서브 클래스에서 공통으로 사용될 수 있습니다.

이제 Animal 클래스를 확장한 Cat 클래스를 생성해보겠습니다.

public class Cat extends Animal {
    public Cat(String name) {
        super(name);
    }

    public void move() {
        System.out.println(getName() + " is walking");
    }

    public void eat() {
        System.out.println(getName() + " is eating fish");
    }
}

위의 코드에서 Cat 클래스는 Animal 클래스를 확장하고 있으며, move()와 eat() 메서드를 구체화하고 있습니다. 이제 Cat 클래스에서 move()와 eat() 메서드는 모두 구체적으로 정의되었기 때문에 Cat 클래스를 인스턴스화하여 사용할 수 있습니다.

public static void main(String[] args) {
    Animal animal = new Cat("Tom");
    animal.move(); // 출력: Tom is walking
    animal.eat(); // 출력: Tom is eating fish
}
profile
주니어 개발자

0개의 댓글