[Java] 추상클래스(Abstract Class)

myeonghyun·2022년 8월 24일
0

공부

목록 보기
4/5
post-thumbnail

추상클래스(Abstract Class) 란

  • 일반적인 방식으로의 Object 생성 불가

일반적으로 우리가 흔히 사용하는 new 명령어로 하여금 Object 생성이 불가능하다.

  • 배열 방식으로의 Object 생성

배열로는 new 연산자를 사용하여 Object 생성이 가능하다.
추상클래스(Abstract Class)로 하여금 객체를 만들 수는 없지만, 그 클래스의 변수나 배열에 Sub-class의 객체를 담을 수는 있다.

-> 추상클래스 사용방법

사용하기 위해선 기본적으로 클래스 명 앞에 abstract 라고 명시해주어야 한다.

추가적으로, 추상클래스에서는 추상메소드(몸체가 존재하지 않는 메소드를 지닐 수 있는 함수) 를 사용할 수 있는데 이러한 추상메소드 명 앞에도 abstract 를 명시해주어야 한다.

-> 추상클래스를 사용하는 이유

아래의 예시와 같이 Human의 추상클래스를 상속받은 모든 서브클래스들(Human1, Human2)은 추상메소드인 whatTheylike()와 같은 이름의 메서드를 지닌 것을 확인할 수 있다.
즉, 추상클래스의 메소드는 Sub-class에서 반드시 오버라이딩 되어야 한다는 의미이다.

결론적으로, 객체를 한 곳에 모아서 손쉽게 시스템을 제어할 수 있게된다.

  • Human.java

public abstract class Human {

		public abstract void whatTheylike();
		public void doTheysleep() {
			System.out.println("Every human requires sleep");
		}
	}
  • Human1.java

public class Human1 extends Human {
	//@overide
	public void whatTheylike() {
		System.out.println("we like to have chicken.");
	}
}
  • Human2.java

public class Human2 extends Human {
	//@overide
	public void whatTheylike() {
		System.out.println("we like to have pizza.");
	}
}
  • TestHuman.java

public class TestHuman {

	public static void main(String[] args) {
		Human human1 = new Human1();
		human1.whatTheylike();
		Human human2 = new Human2();
		human2.whatTheylike();
		human1.doTheysleep();
		human2.doTheysleep();
	}

}
  • Result

profile
while(1)

0개의 댓글