本文由个人自行总结,各位大神如有不同建议欢迎指出,也希望能给个关注
public class Test{
public static void main(String[] args) {
Car bmw = new BMW("宝马x5");
System.out.println(bmw.name);
bmw.prin();
System.out.println(bmw.ffInteger);
System.out.println( bmw.getClass());
}
}
java console 打印结果: 我是父类构造无参 我是子类构造 汽车 子子 5 class exercise.BMW
class Car {
String name = "汽车";
Integer ffInteger = 5;
Car(String name){
name = this.name;
System.out.println("我是父类构造");
}
public Car() {
System.out.println("我是父类构造无参");
}
void prin() {
System.out.println("爸爸");
}
}
class BMW extends Car{
String name = "宝马";
Integer ffInteger =226;
BMW(String name) {
this.name = name;
System.out.println("我是子类构造");
}
void prin() {
System.out.println("子子");
}
}
我们可以看到。对于成员变量 name 和方法 prin() 而言.通过 new BMW() 实例调用之后, 成员变量输出的 父类 Car 的值, 方法打印的却是子类 BMW 的值。并且父类只调用了无参的构造方法。不要错误的认为父类的有参构造方法也会被调用,除非你自己显式的调用了。
对于父类和子类有相同的成员变量和方法。 调用方法总是优先调用子类的方法,成员变量看谁对实例进行了引用,本例子是父类进行了引用: Car bmw ,so 调用的是父类的值
网友评论