웹사이트 검색

Java의 추상 클래스


Java의 추상 클래스는 기본 메서드 구현을 포함할 수 있다는 점을 제외하면 인터페이스와 유사합니다. 추상 클래스는 본문 없이 추상 메서드를 가질 수 있으며 구현이 있는 메서드도 가질 수 있습니다. abstract 키워드는 추상 클래스 및 메서드를 만드는 데 사용됩니다. Java의 추상 클래스는 인스턴스화할 수 없습니다. 추상 클래스는 주로 하위 클래스가 추상 메서드를 확장 및 구현하고 추상 클래스에서 구현된 메서드를 재정의하거나 사용하기 위한 기반을 제공하는 데 사용됩니다.

Java의 추상 클래스

package com.journaldev.design;

//abstract class
public abstract class Person {
	
	private String name;
	private String gender;
	
	public Person(String nm, String gen){
		this.name=nm;
		this.gender=gen;
	}
	
	//abstract method
	public abstract void work();
	
	@Override
	public String toString(){
		return "Name="+this.name+"::Gender="+this.gender;
	}

	public void changeName(String newName) {
		this.name = newName;
	}	
}

work()는 추상 메서드이며 본문이 없습니다. 다음은 자바에서 추상 클래스를 확장하는 구체적인 클래스 예제입니다.

package com.journaldev.design;

public class Employee extends Person {
	
	private int empId;
	
	public Employee(String nm, String gen, int id) {
		super(nm, gen);
		this.empId=id;
	}

	@Override
	public void work() {
		if(empId == 0){
			System.out.println("Not working");
		}else{
			System.out.println("Working as employee!!");
		}
	}
	
	public static void main(String args[]){
		//coding in terms of abstract classes
		Person student = new Employee("Dove","Female",0);
		Person employee = new Employee("Pankaj","Male",123);
		student.work();
		employee.work();
		//using method implemented in abstract class - inheritance
		employee.changeName("Pankaj Kumar");
		System.out.println(employee.toString());
	}

}

하위 클래스 Employee는 메서드를 재정의할 때 항상 재정의 주석을 사용해야 하는 이유를 사용하여 수퍼클래스 Person의 속성과 메서드를 상속합니다.

Java 중요 사항의 추상 클래스

  1. abstract 키워드는 자바에서 추상 클래스를 만드는 데 사용됩니다.
  2. Java의 추상 클래스는 인스턴스화할 수 없습니다.
  3. abstract 키워드를 사용하여 추상 메서드를 만들 수 있습니다. 추상 메서드에는 본문이 없습니다.
  4. 클래스에 추상 메서드가 있는 경우 클래스도 추상 키워드를 사용하여 추상이어야 합니다. 그렇지 않으면 컴파일되지 않습니다.
  5. 추상 클래스가 추상 메서드를 가질 필요는 없습니다. 클래스가 추상 메서드를 선언하지 않더라도 클래스를 추상으로 표시할 수 있습니다.
  6. 추상 클래스에 메서드 구현이 없다면 java는 다중 클래스 상속을 지원하지 않기 때문에 인터페이스를 사용하는 것이 좋습니다.
  7. 자바에서 추상 클래스의 하위 클래스는 하위 클래스도 추상 클래스가 아닌 한 모든 추상 메서드를 구현해야 합니다.
  8. 인터페이스의 모든 메서드는 인터페이스 메서드가 정적이거나 기본이 아닌 한 암시적으로 추상화됩니다. 인터페이스의 정적 메서드 및 기본 메서드는 Java 8에 추가되었습니다. 자세한 내용은 Java 8 인터페이스 변경 사항을 참조하세요.
  9. Java Abstract 클래스는 인터페이스 메서드 구현을 제공하지 않고도 인터페이스를 구현할 수 있습니다.
  10. Java Abstract 클래스는 모든 하위 클래스에 공통 메서드 구현을 제공하거나 기본 구현을 제공하는 데 사용됩니다.
  11. main() 메서드가 있는 경우 다른 클래스와 마찬가지로 Java에서 추상 클래스를 실행할 수 있습니다.

이것이 Java의 추상 클래스에 대한 전부입니다. 중요한 내용을 놓친 경우 댓글을 통해 알려주세요.