본문 바로가기
(혼) (공) (자)

Class - 추상화/추상메서드

by 만석이 2024. 1. 17.
기존 클래스들의 공통적인 요소를 모아 클래스를 만들어내는 기술이다.

바로 예시를 보자

abstract class Animal {

private String name;

 

// 추상 메서드 선언

public abstract void makeSound();

 

// 일반 메서드

public void setName(String name) {

this.name = name;

}

 

public String getName() {

return name;

}

}

 

//추상 클래스 Animal을 상속받는 구현 클래스 Dog

class Dog extends Animal {

// 추상 메서드 구현

@Override

public void makeSound() {

System.out.println(getName() + "가 멍멍 소리를 낸다.");

}

}

 

//추상 클래스 Animal을 상속받는 구현 클래스 Cat

class Cat extends Animal {

// 추상 메서드 구현

@Override

public void makeSound() {

System.out.println(getName() + "가 야옹 소리를 낸다.");

}

}

 

public class Ex1_Abstract {

public static void main(String[] args) {

// Dog 클래스의 인스턴스 생성

Dog myDog = new Dog();

myDog.setName("멍멍이");

myDog.makeSound();

 

// Cat 클래스의 인스턴스 생성

Cat myCat = new Cat();

myCat.setName("야옹이");

myCat.makeSound();

}

}


부모인 Animal클래스가 abstract 를 사용함으로써 추상클래스가 만들어졌다.
왜 사용했을까? 

public abstract void makeSound ();
메소드를 사용하기위해 추상클래스를 만들어준것이다.
그리고 추상클래스는 자식이 무조건 오버라이딩 받아야하며 메서드를 재정의해줘야한다.

즉 추상클래스를 사용함으로써
강제성 제공, 일관성 유지 를 할수있다.


마지막 으로 중요한것 ! 추상클래스는 객체생성을 하는법이 조금 다르다.

추상 클래스 Animal을 직접적으로 인스턴스화할 수 없다.
그렇기 때문에 자식 클래스의 객체를 생성해서 접근해야한다.






'(혼) (공) (자)' 카테고리의 다른 글

인터페이스-1  (0) 2024.01.22
인터페이스  (0) 2024.01.17
Class - 다형성 (2)  (1) 2024.01.16
Class 다형성 / 타입변환  (0) 2024.01.16
다중 생성자  (0) 2024.01.12