JAVA 추상 클래스

Dev.Shinny·2022년 9월 26일
0

자바의 정석

목록 보기
9/18

추상클래스(abstract class)란?

  • 하나 이상의 추상 메소드를 포함하는 클래스
  • 반드시 구현해야 하는 부분에 대해 명시적으로 표현
  • 추상 클래스 자체는 객체(인스턴스) 생성 불가
abstract class 클래스명 {}
abstract class Person {}

추상 클래스는 추상 메서드를 포함하고 있다는 것을 제외하고는 일반 클래스와 다르지 않다. 추상 클래스에도 생성자가 있으며, 멤버변수와 메서드도 가질 수 있다.

추상 메서드

선언부만 작성하고 구현부는 작성하지 않은 채로 남겨둔 미완성 메서드다.

abstract 리턴타입 메서드명();
abstract void print();

상속 받는 자식 클래스마다 메서드가 다르게 구현될 것으로 예상되는 경우에 추상 메서드를 사용한다.

추상 클래스의 작성

상속이 자식 클래스를 만드는데 부모 클래스를 사용하는 것이라면, 반대로 추상화는 기존의 클래스의 공통 부분을 뽑아내서 부모 클래스를 만드는 것이라 할 수 있다.

상속계층도를 따라 내려갈수록 클래스는 점점 기능이 추가되어 구체화의 정도가 심해지고, 상속계층도를 따라 올라갈수록 클래스는 추상화의 정도가 심해진다.

추상화 : 클래스간의 공통점을 찾아내 고통의 조상을 만드는 작업
구체화 : 상속을 통해 클래스를 구현, 확장하는 작업.

추상화된 코드는 구체화된 코드보다 유연하고 변경에 유리하다.

실습

// 추상 클래스 Person
abstract class Person{
	abstract void printInfo();
}

// 추상 클래스 상속
class Student extends Person{
	public void printInfo() {
		System.out.println("Stuendt.printInfo");
	}
}

public class Main {
    public static void main(String[] args) {
   
    	Person p = new Person(); // 추상클래스는 객체 생성 불가
    	Student s1 = new Student();
    	s1.printInfo();
    	
    	< 익명 클래스 사용 >
    	Person p = new Person() {
			void printInfo() {
				System.out.println("Main.printInfo");
			}
		};				
    }
}
profile
Hello I'm Shinny. A developer who try to enjoy the challenge.

0개의 댓글