[JAVA] 7-1. 추상 클래스 (abstract class)

Dec 26, 2023
[JAVA] 7-1. 추상 클래스 (abstract class)
이제 자바 문법이 얼마남지 않았습니다.
💡
추상 클래스는 완전하게 구현되어 있지 않은 메소드를 가지고 있는 클래스 입니다.
  • 추상 클래스는 추상 메서드를 가지고 있다. 하나이상 가지고 있어야 한다.
  • 추상 클래스는 new(동적 바인딩)할 수 없다. (오브젝트가 아닙니다.)
 
 
public abstract class Animal { public abstract void move(); }
※위처럼 추상 메소드를 선언시에는 ;로 끝을 내주어야 합니다.
 
예제
abstract class Shape { int x, y; public void translate(int x, int y) { this.x = x; this.y = y; } public abstract void draw(); // 추상 메소드 선언! } class Rectangle extends Shape{ int width, height; public void draw() { System.out.println("사각형 그리기 메소드"); } } class Circle extends Shape{ int radius; public void draw() { System.out.println("동그라미 그리기 메소드"); } } public class AbstractTest { public static void main(String[] args) { // Shape s1 = new Shape(); -> 오류!! 추상 클래스로 객체를 생성할 수는 없습니다. Shape s2 = new Circle(); s2.draw(); } }
notion image
도형을 그리는 draw() 메소드는 도형(클래스)마다 그리는 방법이 달라진다. 따라서 Shape()에서 정의될 수 없기 때문에 추상 메소드로 정의한다. 그리고 각 클래스에서 추상 메소드를 구현했습니다.
 
 

🧐 추상 클래스를 사용하는 이유가 뭘까

추상 메소드로 정의
abstract class Shape{ public abstract void draw(); }
abstrat를 사용해 코드가 길어졌다.
일반 메소드로 정의
class Shape{ public void draw() {} }
class Circle etends Shape{ @Override public void draw() { System.out.println("Circle draw"); } }
자식클래스에서 반드시 오버라이드해야 한다. (하지 않으면 오류 발생)
class Circle etends Shape{ @Override public void draw() { System.out.println("Circle draw"); } }
자식 클래스에서 오버라이드 하지 않아도 컴파일러가 체크할 방법이 없다.
∴자식 클래스에서 추상 메소드 draw()구현을 강요(강제)하기 위해서 사용된다.
 
Share article

MiracleCoding