java中person作用_以下Java程序中Person(){};是什么意思,有什么作用?

匿名用户

1级

2013-08-20 回答

Person()方法是用来创建实例的构造方法,例如你要创建一个Person类的实例就需要new Person(),这里的Person()就是Person类的构造方法,构造方法没有返回值(注意是没有返回值 不是返回void),并且名称必与类名一致。

因为你重载了一个构造方法Person(String n, char s),系统就不会再为你提供无参的构造方法了,也就是说你只能通过

new Person(String n, char s) 来实例化对象,而调用new Person()则会报错,因为找不到该方法。所以你要再写一个无参的构造方法Person(),这样你就可以通过new Person()和new Person(String n, char s)两种方式来创建对象了。

追问:

那为什么Person(){};在这段代码之中不能删除呢?

追答:

当一个类被另一个类继承时,

实例化子类必先实例化父类,

若不指定子类创建实例时会自动调用super()方法,也就是父类的无参构造方法。

所以你要想删除父类中的无参构造方法只有通过两种方式:

1.删除掉子类中的所有调用super()的构造方法,未声明的就是默认调用,例如你的无参构造方法

2.在子类的构造方法中声明调用父类的有参构造方法例如Student中的super(n,s)

但是一般都要写一个无参方法 以为很多插件例如Hibernate 他就会去调用你的无参方法创建实例,如果你的类中没有无参方法Hibernate 就无法帮你创建实例

class Person {

String name;

char sex;

Person(String n, char s) {

name = n;

sex = s;

}

void show() {

System.out.println("nameis" + name + ",sexis" + sex);

}

}

class Student extends Person {

int number;

Student(String n, char s, int num) {

super(n, s); //删除子类中的无参构造方法 并指定该子类的构造方法去调用父类中指定的构造方法,让JVM不去调用无参方法

this.number = num;

}

void show() {

System.out.println("nameis" + name + ",sexis" + sex + ",numberis"

+ number);

}

}

class Pupil extends Student {

double hcScore;

Pupil(String n, char s, int num, double hcs) {

super(n, s, num); //同上

hcScore = hcs;

}

void show() {

System.out.println("nameis" + name + ",sexis" + sex + ",numberis"

+ number + ",Scoreis" + hcScore);

}

}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值