java如何在子类中赋值给父类的变量

Python031

java如何在子类中赋值给父类的变量,第1张

使用super关键字就可以了,比如:

父类里的ele属性

如果是public的直接super.ele="abc"

但如果是private的,并有set方法就调用set方法

super.setEle("abc")

非private 的,可以使用super的。

楼主,你这个语句不是在方法中使用,不用这样调用的。要在方法体内使用。如

//子类

public class Son extends father{

public Son(){

super.i=1 //给父类中i赋值

}

}

这个题考察的是子类继承父类需要注意的地方,但是题出的很奇葩,你子类继承父类时,题目给定的方法

public YoshiIslandTaxCalculator() {

super(getTaxRate())

double taxRate = 0.07

}

会报编译错误,原因是 显示调用构造器时不能引用一个类的实例域,

按照继承规则,子类的对象将可以使用到父类的方法,所以,父类中那些使用了构造器参数值的方法,其子类对象将可能访问到。因此,必须要确保父类构造器的参数可以被赋值。

“可以被赋值”有两种方式,

一是先实例化出对象,再通过setter赋值;

二是在实例化的时候就赋值,即通过构造器参数的形式传参。

你的题目中,父类没有提供默认的无参构造器。所以,方式一被封死。

而方式二在本例中,无法通过在实例化子类同时,同时为父类构造器变量赋值,编译器意识到了这个错误,因此会报编译错误。

/*

* 子类构造方法中必须通过super关键字调用父类的构造方法

* 构造子类之前必先构造父类,子类构造方法中第一句应有个默认的super方法

* 若子类没有写,则编译器自动加入对父类无参构造的调用;

* 若父类的默认构造方法有参数,则子类也应写super配参数,

* 或者在子类中重新定义super构造

* @param taxRate

*/

public YoshiIslandTaxCalculator(Double taxRate) {

super(taxRate)

}