> Java > java지도 시간 > 본문

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

PHPz
풀어 주다: 2023-09-13 18:09:03
앞으로
1554명이 탐색했습니다.

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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿