java 父类构造器和类变量

类实例

父类

1. 为父类的成员变量赋予用户给定值。

2. 默认调用其父类的空构造方法。如果其父类没有空构造方法,必须调用指定的父类构造方法,使用关键字super()

初始化

1. 再初始化子类,为子类的成员变量赋予用户给定值。

2. 调用指定的构造方法。

案例

Adder

public class Adder {


    private int radio = 2;


    private int value ;

    public Adder(int value){
        System.out.println("create Adder radio="+radio);
        setValue(value);
    }

    public Adder(int value){
        setValue(value);
    }


    public void setValue(int value) {
        System.out.println("setValue radio="+radio);

        this.value = value;
    }

    public int getValue() {
        value++;
        setValue(value);
        System.out.println("a="+value);
        return value;
    }
}

Multiper

public class Multipler extends  Adder{
    private double radio = 1.5;

    public Multipler(int value) {
        super(value);
        System.out.println("create Multipler");
        System.out.println("Multiple  radio="+radio);
    }

    @Override
    public void setValue(int value) {
        System.out.println("setValue radio="+radio);
        super.setValue((int) (value * 2 * radio));
    }

    public static void main(String[] args) {
      System.out.println(  new Multipler(5).getValue());
    }
}

输出结果

create Adder radio=2
Multipler  setValue radio=0.0
Adder setValue radio=2
create Multipler
Multiple radio=1.5
Multipler  setValue radio=1.5
Adder setValue radio=2
a=3
3

解析

父类实例化,第一次打印ratio

由于实例化子类Mutiper必须先实现其父类Adder。故打印Adder 的类成量ratio。打印出2.

第一次调用setValue

value = value * 2*radio 

由Adder构造方法调用setValue,由于子类Multiper未实例化它的类变量ratio是默认值0。

 导致value 也等于=0.

第二次调用setValue

由于Multiper的setValue方法,调用父类的setValue方法。故打印setValue =2

子类实例化,第二次打印radio

由于父类Adder实例化结束,开始实例化子类Multiper。故打印ratio =1.5。

第三次调用setValue

由于调用了get方法。,调用setValue。 故打印1.5.

第四调用setValue

同样,由于Multiper的setValue方法,调用父类的setValue方法。故打印setValue =2

最终

由于get方法调用了value++; 故value=1;

执行 value*2* radio 所以输出3.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jiguansheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值