为什么接口没有构造函数,而抽象类却具有Java构造函数?

甲构造 是特定类别的非静态成员相对于一个对象初始化。

接口中的构造方法

  • 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值为:" + t.add(10,20));

   }

}

输出结果

k值为: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("经理名称是:" + e.empName);

      System.out.println("工资是:" + e.calcSalary());

   }

}

输出结果

经理名称是:Adithya

工资是:50000.0

以上是 为什么接口没有构造函数,而抽象类却具有Java构造函数? 的全部内容, 来源链接: utcz.com/z/316571.html

回到顶部