Java 추상클래스

김정훈·2024년 4월 19일

Java

목록 보기
19/48

추상클래스

1. 추상의 의미

추상적 : 어떤일을 해야할지 정해지지 않음.
구체적 : 어떤 일을 해야할지 명확하게 정의

2. 추상클래스란?

  • 구성 요소 중에서 정해지지 않은 클래스
  • 함수가 수행할 내용이 결정되지 않은 클래스
  • 함수의 정의만 있는 클래스

추상메서드 : 설계
공통메서드(인스턴스 메서드) : 하위 클래스가 공유할 자원

3. 추상클래스를 사용하는 이유

추상 클래스는 인스턴스로 생성할 수 없다.

  • 추상 클래스는 모든 메서드가 구현되지 않았으므로 인스턴스로 생성할 수 없습니다.

추상 클래스에서 구현하는 메서드

  • 생성할 수 없는 추상 클래스는 상속을 하기 위해 만든 클래스입니다.
  • 추상클래스에는 추상메서드와 구현된 메서드가 함께 사용 될 수 있습니다.
  • 구현된 메서드는 하위 클래스에서도 사용할 즉, 하위 클래스에서도 구현 내용을 공유할 메서드를 구현합니다.
  • 실제 하위 클래스에서 내용을 각각 다르게 구현해야 한다면, 구현 내용을 추상 메서드로 남겨 두고 하위 클래스에 구현을 위임하는 것입니다.

내가 이해한 추상클래스를 사용하는 이유!
상위클래스보다 하위클래스가 더 많은 수행할 수 있다. 상위클래스에서 무엇을 하는지가 중요하지가 않고 여러 하위클래스들이 각각 어떤일을 하는지가 더 중요하다.
그렇기 떄문에 상위클래스에서는 공통으로 사용할수있는 틀을 추성적으로 정의함으로서 하위클래스는 그 틀을가지고 구체적으로 무엇을 해야할지를 정의한다.

구현된 메서드 : 하위 클래스에서 공통으로 사용할 구현 코드, 하위 클래스에서 재정의할 수도 있음.

추상 메서드 : 하위 클래스가 어떤 클래스냐에 따라 구현 코드가 달라짐

4. 추상클래스와 다형성

추상 클래스는 하위에 구현된 여러 클래스를 하나의 자료형(상위 클래스 자료형)으로 선언하거나 대입할 수 있습니다. 추상 클래스에 선언된 메서드를 호출하면 가상 메서드에 의해 각 클래스에 구현된 기능이 호출됩니다.
즉, 하나의 코드가 다양한 자료형을 대상으로 동작하는 다형성을 활용할 수 있습니다.

4. 문법

public abstract class Calculator {
    public abstract int add(int n1, int n2);
}

- - - - - - - - - - - - - - - - - - - - - -

public class HighSchoolStudent extends Student{
    //Student stu =new Student(15,"김정훈");
    public HighSchoolStudent(){
        super(15,"이름"); //super는 상위클래스를 생성하기떄문에 상위클래스의 생성자 매개변수를 지정해야함

    }
    @Override
    public String toString() {
        return "HighSchoolStudent{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}
Calculator
public abstract class Calculator {
    int num = 10;
    public abstract int add(int n1, int n2);
}
------------------------------------
SimpleCalculator
package exam05;

public class SimpleCalculator extends Calculator{
    @Override
    public int add(int n1, int n2) {
        return n1+n2;
    }
}
------------------------------------
Ex01
package exam05;

public class Ex01{
    public static void main(String[] args) {
        Calculator cal = new SimpleCalculator();
        int result = cal.add(10, 20);
        System.out.println(result);

        System.out.println(cal.num);
    }
}
profile
안녕하세요!

0개의 댓글