[JAVA] Abstract

2024. 3. 26. 10:05·JAVA

abstract는 자바에서 클래스나 메서드를 추상화할 때 사용되는 키워드이다. 추상 클래스는 객체를 직접적으로 생성할 수 없고, 추상 메서드는 메서드의 구현이 없는 상태로 선언된다.

1. 추상 클래스 (Abstract Class):

추상 클래스는 하나 이상의 추상 메서드를 포함하며, 객체를 직접적으로 생성할 수 없다. 추상 클래스는 상속을 통해 자식 클래스에게 메서드의 구현을 강제할 수 있다.

abstract class Shape {
    abstract void draw(); // 추상 메서드
    
    void display() {
        System.out.println("Shape");
    }
}

class Circle extends Shape {
    void draw() {
        System.out.println("circle.");
    }
}

class Rectangle extends Shape {
    void draw() {
        System.out.println("rectangle.");
    }
}

public class Example {
    public static void main(String[] args) {
        Shape circle = new Circle();
        Shape rectangle = new Rectangle();
        
        circle.draw(); // 출력: circle.
        circle.display(); // 출력: Shape.
        
        rectangle.draw(); // 출력: rectangle.
        rectangle.display(); // 출력: Shape.
    }
}

 

2. 추상 메서드 (Abstract Method):

추상 메서드는 선언만 되고 구현이 없는 메서드를 의미한다. 추상 메서드는 세미콜론(;)으로 끝나며, 하위 클래스에서 반드시 구현돼야 한다.

abstract class Animal {
    abstract void sound(); // 추상 메서드
}

class Dog extends Animal {
    void sound() {
        System.out.println("멍멍");
    }
}

class Cat extends Animal {
    void sound() {
        System.out.println("야옹");
    }
}

public class Example {
    public static void main(String[] args) {
        Animal dog = new Dog();
        Animal cat = new Cat();
        
        dog.sound(); // 출력: 멍멍
        cat.sound(); // 출력: 야옹
    }
}

 


  • 추상 클래스는 하나 이상의 추상 메서드를 포함하며, 일반 메서드도 가질 수 있다.
  • 추상 클래스는 abstract 키워드를 사용하여 선언된다.
  • 추상 메서드는 메서드 시그니처만을 가지고 있으며, 중괄호 {} 내에 구현이 없다.
  • 추상 클래스의 인스턴스를 직접 생성할 수 없지만, 추상 클래스의 참조 변수를 사용하여 하위 클래스의 인스턴스를 참조할 수 있다.
  • 추상 클래스는 new로 객체 생성이 불가능하다.
저작자표시 (새창열림)

'JAVA' 카테고리의 다른 글

[JAVA] Interface  (0) 2024.03.27
[JAVA] Abstract 예제  (0) 2024.03.26
[JAVA] static  (0) 2024.03.25
[JAVA] Call By Value / Call By Reference  (0) 2024.03.25
[JAVA] 오버로딩(Overloading)과 오버라이드(Override)  (0) 2024.03.25
'JAVA' 카테고리의 다른 글
  • [JAVA] Interface
  • [JAVA] Abstract 예제
  • [JAVA] static
  • [JAVA] Call By Value / Call By Reference
kwh_coding
kwh_coding
성장하는 괴물 성괴 김우형
  • kwh_coding
    코딩 일기
    kwh_coding
  • 전체
    오늘
    어제
    • 분류 전체보기
      • JAVA
      • JavaScript
        • Node
        • React
      • PYTHON
      • GitHub
      • DJANGO
      • ERP Project
      • NAVER CLOUD Web DevOps
      • 자격증
        • SQLD
        • 정보처리기사
        • ADsP
      • 코딩테스트
        • 프로그래머스 Lv0
        • 프로그래머스 Lv1
      • Spring
      • Tools
        • Postman
        • eGov
      • WEB
      • CS
  • 블로그 메뉴

    • 홈
    • GitHub
    • Notion
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    SQLD
    프로그래머스
    해시 암호화
    spring
    github
    Python
    eGov
    AdSP
    코딩
    javascript
    정보처리기사
    Java
    코테
    git
    코딩테스트
    Postman
    React
    CORS
    web
    node
    js
    gitbash
    django
    Tomcat
    private network
    brycpt
    html
    annotation
    jsp
    RDBMS
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
kwh_coding
[JAVA] Abstract
상단으로

티스토리툴바