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