Python (3.6):
class A:
    a: int = 6
    def class_print(self):
        print(self.a)
class B(A):
    a: int = 7
def main():
    a = A()
    a.class_print()
    b = B()
    b.class_print()
if __name__ == "__main__":
    main()
Output:
6
7
А в Java (8)
package temp;
class A {
    int a = 5;
    public void printMethod(){ System.out.println(a); }
}
class B extends A {
    int a = 6;
}
public class main {
    public static void main(String[] args) {
        A a = new A();
        a.printMethod();
        B b = new B();
        b.printMethod();
    }
}
Output:
5
5
Лично для меня поведение Python в данном случае является очевидным, но почему в Java иначе и как добиться (если возможно) поведения аля Python в данном случае? Почему?









