加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java中子类的构造函数

发布时间:2020-12-15 02:07:13 所属栏目:Java 来源:网络整理
导读:在编译这个程序时,我得到错误 – class Person { Person(int a) { } } class Employee extends Person { Employee(int b) { } } public class A1{ public static void main(String[] args){ } } 错误 – 找不到构造函数Person(). 为什么定义Person()是必要的
在编译这个程序时,我得到错误 –

class Person {
  Person(int a) { }
 }
 class Employee extends Person {
    Employee(int b) { }
 }
 public class A1{
    public static void main(String[] args){ }
 }

错误 – 找不到构造函数Person().
为什么定义Person()是必要的?

解决方法

创建员工时,您同时创建了一个人员.为了确保正确构造Person,编译器在Employee构造函数中添加对super()的隐式调用:

class Employee extends Person {
     Employee(int id) {
         super();          // implicitly added by the compiler.
     }
 }

由于Person没有无参数构造函数,因此失败.

你可以解决它

>添加对super的显式调用,如下所示:

class Employee extends Person {
     Employee(int id) {
         super(id);
     }
 }

>或者向Person添加一个no-arg构造函数:

class Person {
    Person() {
    }

    Person(int a) {
    }
}

通常,编译器也会隐式添加no-arg构造函数.正如Binyamin Sharet在评论中指出的那样,只有在没有指定构造函数的情况下才会出现这种情况.在您的情况下,您已指定Person构造函数,因此不会创建隐式构造函数.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读