[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
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

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

티스토리툴바