>  기사  >  Java  >  Java에서 인터페이스에는 생성자가 없지만 추상 클래스에는 생성자가 있는 이유는 무엇입니까?

Java에서 인터페이스에는 생성자가 없지만 추상 클래스에는 생성자가 있는 이유는 무엇입니까?

PHPz
PHPz앞으로
2023-09-13 18:09:031552검색

Java에서 인터페이스에는 생성자가 없지만 추상 클래스에는 생성자가 있는 이유는 무엇입니까?

Constructor는 객체와 관련된 특정 클래스의 비정적 멤버를 초기화하는 데 사용됩니다.

인터페이스의 생성자

  • Java의 인터페이스에는 생성자가 없습니다. 인터페이스의 모든 데이터 멤버는 기본적으로 public static final 이고 상수(선언 시 할당됨)이기 때문입니다.
  • 인터페이스에는 데이터 멤버가 없으며 생성자를 통해 초기화할 수 있습니다.
  • 메서드를 호출하려면 객체가 필요합니다. 인터페이스의 메서드에는 몸체가 없으므로 인터페이스에서 메서드를 호출할 필요가 없습니다.
  • 인터페이스에서는 메서드를 호출할 수 없으므로 인터페이스에 대한 개체를 만들 필요도 없고 생성자를 포함할 필요도 없습니다.

예제 1

interface Addition {
   int add(int i, int j);
}
public class Test implements Addition {
   public int add(int i, int j) {
      int k = i+j;
      return k;
   }
   public static void main(String args[]) {
      Test t = new Test();
      System.out.println("k value is:" + t.add(10,20));
   }
}

출력

k value is:30

클래스의 생성자

  • 클래스constructor의 목적은 필드를 초기화하는 것이지 객체를 빌드하는 것은 아닙니다.
  • 추상 슈퍼 클래스의 새 인스턴스를 생성하려고 하면 컴파일러에서 오류가 발생합니다.
  • 그러나 추상 클래스를 상속하고 생성자를 사용하여 변수를 설정하여 이를 제어할 수 있습니다.
예제 2

abstract class Employee {
   public String empName;
   abstract double calcSalary();
   Employee(String name) {
      this.empName = name; // Constructor of abstract class  
   }
}
class Manager extends Employee {
   Manager(String name) {
      super(name); // setting the name in the constructor of subclass
   }
   double calcSalary() {
      return 50000;
   }
}
public class Test {
   public static void main(String args[]) {
      Employee e = new Manager("Adithya");
      System.out.println("Manager Name is:" + e.empName);
      System.out.println("Salary is:" + e.calcSalary());
   }
}

출력

Manager Name is:Adithya
Salary is:50000.0

위 내용은 Java에서 인터페이스에는 생성자가 없지만 추상 클래스에는 생성자가 있는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제