AOSMTO - Access Of Static Members Through Objects

Static members should be referenced through class names rather than through objects.

Wrong

class AOSMTO1 {
    void func () {
        AOSMTO1 obj1 = new AOSMTO1();
        AOSMTO2 obj2 = new AOSMTO2();
        obj1.attr = 10;
        obj2.attr = 20;
        obj1.oper();
        obj2.oper();
        this.attr++;
        this.oper();
    }
    static int attr;
    static void oper () {}
}
class AOSMTO2 {
    static int attr;
    static void oper () {}
}

Tip: Always reference static members via class names

Right

class AOSMTO1 {
    void func () {
        AOSMTO1 obj1 = new AOSMTO1();
        AOSMTO2 obj2 = new AOSMTO2();
        AOSMTO1.attr = 10;
        AOSMTO2.attr = 20;
        AOSMTO1.oper();
        AOSMTO2.oper();
        AOSMTO1.attr++;
        AOSMTO1.oper();
    }
    static int attr;
    static void oper () {}
}
class AOSMTO2 {
    static int attr;
    static void oper () {}
}