이롭게 현명하게

[JAVA] 자바 추상 클래스와 추상 메소드 본문

JAVA

[JAVA] 자바 추상 클래스와 추상 메소드

dev_y.h 2023. 5. 1. 18:55
728x90
반응형


 

목차

 

추상 클래스

추상 클래스 상속

 


 

<정리>

public abstract class 클래스명{
	// 필드
    // 생성자
    // 메소드
}

[추상 클래스]

추상(abstract) : 실체 간에 공통되는 특성을 추출한 것

추상 클래스(abstract class) : abstract로 선언된 클래스로 클래스들의 공통적인 특성을 추출해서 선언한 클래스

- 추상 클래스와 실체 클래스는 상속의 관계를 가지고 있다.

추상 클래스 : 부모, 실체 클래스 : 자식  으로 실체 클래스는  추상 클래스의 모든 특성을 물려받고 추가적인 특성을 가질 수 있다.

- 추상 메소드, 일반 메소드 둘 다 가질 수 있다.

추상 메소드(abstract method) : 선언 되어 있으나 구현되어 있지 않은 메소드, abstract로 선언, 

추상 메소드는 서브 클래스에서 오버라이딩하여 구현해야한다.

 

추상 클래스는 실체 클래스의 공통되는 필드와 메소드를 추출해서 만들었기 때문에 객체를 직접 생성해서 사용할 수 없다.

즉, new 연산자를 사용해서 인스턴스를 생성시키지 못한다.

추상클래스는 새로운 실체 클래스를 만들기 위해 부모 클래스로만 사용된다.

<추상 클래스의 용도>

  1. 실체 클래스들의 공통된 필드와 메소드의 이름을 통일할 목적
  2. 실체 클래스를 작성할 때 시간절약
  3. 설계와 구현 분리
    1. 슈퍼 클래스에서는 개념 정의 : 서브 클래스마다 다른 구현이 필요한 메소드는 추상 메소드로 선언
    2. 각 서브 클래스에서 구체적 행위 구현 : 서브 클래스마다 목적에 맞게 추상 메소드 다르게 구현
  4. 계층적 상속 관계를  갖는 클래스 구조를 만들 때
//1. 추상 메소드를 포함하는 추상 클래스
abstract class Shape(){ // 추상 클래스 선언
	public Shape(){}
    public void paint(){draw();} // 일반메소드
    abstract public void draw();// 추상 메소드
}

//2. 추상 메소드 없는 추상 클래스
abstract class MyComponent{ // 추상 클래스 선언
	String name;
    pulbic void load(String name){ // 일반 메소드만 가지는 경우
    	this.name = name;
    }
}

[추상 클래스 상속]

  1. 추상 클래스의 단순 상속 : 추상 클래스를 상속받아, 추상 메소드를 구현하지 않으면 서브 클래스도 abstract로 선언해야 함
  2. 추상 클래스 구현 상속 : 서브 클래스에서 슈퍼 클래스의 추상 메소드 구현(오버라이딩), 서브 클래스는 추상 클래스여도 되고 일반 클래스여도 됨

 

 

[JAVA] 자바 인터페이스

[인터페이스] 인터페이스 : 클래스가 구현해야 할 메소드들이 선언되는 추상형 public interface 인터페이스이름{ ... } 상수 : public만 허용, public static final 생략 추상 메소드 : public abstract 생략 가능 de

devyihyun.tistory.com


잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊

댓글과 좋아요는 큰 힘이 됩니다!

 

더보기

[ 참고자료 ]

 

 

 

 

728x90
반응형

'JAVA' 카테고리의 다른 글

[JAVA] 자바 인터페이스  (0) 2023.05.02
[JAVA] 자바 타입 변환  (0) 2023.04.28
[JAVA] 자바 클래스 상속  (0) 2023.04.27
[JAVA] 자바 상속 개념  (0) 2023.04.26
[JAVA] 자바 접근 제한자  (0) 2023.04.25
Comments