在Java中创建类时声明属性

时间:2015-12-28 08:56:30

标签: java oop attributes

有时会因mathematical操作而产生属性。在声明这些属性时,是否会编写数学运算?例如,我需要编写一个代表class的{​​{1}},其属性具有自该时刻午夜起的秒数。我会这样声明:

moment in time

或者我需要将其声明为

private long _secFromMid;?

在宣布private long _secFromMid = ((_hour*60*60) + (_minute*60) + _second);? 时,我们是否有过数学运算?

1 个答案:

答案 0 :(得分:0)

您可以在初始化中进行任何计算。 Java编译器足够聪明,可以按顺序排列。

唯一的限制是,如果已声明已声明,则只能使用其他属性。

请参阅此working example

class Test
{
    private String fooBar = foo + "bar"; // inverted here
    private String foo = "foo";
    private int x = 10;
    private int y = x * 10;
    private MyInt my = new MyInt(5);
    private int z = x * my.get();

    public static void main (String[] args) throws java.lang.Exception
    {
        Test t = new Test();
        System.out.println(t.foo);
        System.out.println(t.fooBar);
        System.out.println(t.x);
        System.out.println(t.y);
        System.out.println(t.z);
    }
}

例如,如果我将代码更改为:

Compilation error time: 0.1 memory: 320576 signal:0
Main.java:19: error: illegal forward reference
    private String fooBar = foo + "bar";
                            ^
1 error

这将导致编译错误:

var myScript = "window.myScript= window.myScript|| {}; 
(function() { 
     function myScript(foo) { 
          //do stuff 
     }
})(window);"