1700441580
1700441581
protected void setOperator(Ops_op){
1700441582
1700441583
result=_op.equals(Ops.ADD)?i+j:i-j;
1700441584
1700441585
}
1700441586
1700441587
//取得运算结果
1700441588
1700441589
public int getResult(){
1700441590
1700441591
return result;
1700441592
1700441593
}
1700441594
1700441595
}
1700441596
1700441597
代码的意图是,通过构造函数输入两个int类型的数字,然后根据设置的操作符(加法还是减法)进行计算,编写一个客户端调用:
1700441598
1700441599
public static void main(String[]args){
1700441600
1700441601
Calculator c1=new Calculator(1,2){
1700441602
1700441603
{
1700441604
1700441605
setOperator(Ops.ADD);
1700441606
1700441607
}
1700441608
1700441609
};
1700441610
1700441611
System.out.println(c1.getResult());
1700441612
1700441613
}
1700441614
1700441615
这段匿名类的代码非常清晰:接收两个参数1和2,然后设置一个操作符号,计算其值,结果是3,这毫无疑问,但是这中间隐藏着一个问题:带有参数的匿名类声明时到底是调用的哪一个构造函数呢?我们把这段程序模拟一下:
1700441616
1700441617
//加法计算
1700441618
1700441619
class Add extends Calculator{
1700441620
1700441621
{
1700441622
1700441623
setOperator(Ops.ADD);
1700441624
1700441625
}
1700441626
1700441627
//覆写父类的构造方法
1700441628
1700441629
public Add(int_i, int_j){
[
上一页 ]
[ :1.70044158e+09 ]
[
下一页 ]