Java和Python继承中的区别
程序员文章站
2023-12-21 21:34:34
...
继承方法中变量的选取
- Python
class A():
a = 1
def printA(self):
print(self.a)
class AA(A):
a = 2
def printAA(self):
print(self.a)
aa = AA()
aa.printA()
aa.printAA()
创建一个父类A,类变量a=1,有一个打印方法printA()打印a的值
再创建一个子类AA继承A,类变量a=2, 再写一个printAA()的方法打印a
创建一个子类AA的实例,然后在主程序中分别打印子类自己的printAA(),也打印继承来的printA(),看结果
输出:
2
2
- Java
父类A
public class A{
int a = 1;
public void p() {
System.out.println(this.a);
}
}
子类AA
public class AA extends A{
int a = 2;
public void p2() {
System.out.println(this.a);
}
}
主程序:
public class test {
public static void main(String[] args) {
AA t2 = new AA();
t2.p();
t2.p2();
}
}
一模一样的写法
输出为
1
2
-
差别:
在Python这个例子中不论是子类自身的方法printAA还是继承来的方法printA,因为子类有a这个变量,所以打印的都是子类的a(=2)
在Java中却不同,子类的方法p2()打印的是子类的变量a,继承来的p()打印的是父类的变量a