생성자 객체와 관련하여 특정 클래스의 비정적 멤버를 초기화하는 것입니다.
인터페이스의 생성자
- 인터페이스 Java에는 생성자 가 없습니다. 인터페이스의 모든 데이터 멤버가 공개 정적 최종 이기 때문입니다. 기본적으로 상수입니다(선언 시 값 할당).
- 인터페이스에 생성자를 통해 초기화할 데이터 멤버가 없습니다.
- 메소드를 호출하려면 객체가 필요합니다. 인터페이스의 메서드에는 본문이 없기 때문에 인터페이스에서 메서드를 호출할 필요가 없습니다.
- 인터페이스에서 메소드를 호출할 수 없기 때문에 인터페이스에 대한 객체를 생성할 필요도 없고 생성자가 있을 필요도 없습니다.
예시 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
클래스의 생성자
- 생성자 의 목적 클래스 에서 필드를 초기화하는 데 사용되지만 개체를 빌드하는 데는 사용되지 않습니다.
- 추상 슈퍼클래스의 새 인스턴스를 만들려고 하면 컴파일러에서 오류가 발생합니다.
- 그러나 추상 클래스를 상속하고 변수를 설정하여 생성자를 사용할 수 있습니다.
예시 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