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 в данном случае? Почему?