子类有参A
我是经管学院的
子类有参B
姓名:null,年龄:0
分析:
-
首先第一句话:
“基类无参”
,说明当子类创建对象时,在调用子类的构造函数之前一定会先调用父类的构造函数,这里是默认使用父类无参的构造函数。 -
第二句输出
“子类有参A”
,是因为this(name, age);
因此在子类的构造函数内部调用了自己的其他构造函数。 -
第三句话
“我是经管学院的”
,是因为在创建stud对象的时候使用了有参的构造函数Student(String name, int age, String sch)
,并且赋值了。 -
最重要的是最后一句:
姓名:null,年龄:0
,为什么这里不是姓名:Li,年龄:18
,因为这里的name, age
都是父类私有的成员变量,只能通过调用父类的有参构造方法来赋值,因此这里为null和0
=================================================================
class Parent{
int x = 100;
void m() {
System.out.println(x);
}
}
class Child extends Parent{
int x = 200; //与基类x同名
void m() { //重写基类的m()
System.out.println(“x=”+x);
System.out.println(“super.x=”+super.x);
super.m(); //调用基类的m()
}
}
public class Zy4_2 {
public static void main(String[ ] args) {
Parent a = new Child(); //转型
a.m(); //转型对象调用的是子类重写基类的m()
System.out.println(a.x);
}
}
结果:
x=200
super.x=100
100
100
分析:这里使用了向上转型,即父类的引用变量指向了一个子类的对象。
- 首先,由于子类与父类有相同名字的成员变量,但此处两者是不同的,分别占用了不同的内存空间。
2.由于子类与父类有同名,同参数的方法,因此子类对父类的m方法进行了重写,因此 a.m();
调用的是子类的构造方法。
- 接着通过
super.m();
调用父类的m方法
=================================================================
class Aw {
int m;
int getM() { return m;}
int seeM() { return m;}
}
class Bw extends Aw {
int m;
int getM() { return m+10; } //重写
int f() { return m; } //子类新增
}
public class Zy4_3 {
public static void main(String[ ] args) {
Bw b = new Bw ();
b.m = 20;
System.out.println(b.getM());
Aw a = b; //转型
a.m = -10; //基类引用变量访问的是基类的m
System.out.println(a.getM()); //调用的是子类重写基类的方法
System.out.println(b.seeM()); //基类方法访问的是基类m
System.out.println(b.f()); //子类新增的方法访问的是子类的m
System.out.println(a.equals(b));
}
}
结果:
30
30
-10
20
true
分析:
- 首先第一个
b.getM()
输出的就是30,由于发生了Aw a = b;
的向上转型,因此a指向了b的对象,a.getM()
,调用的是子类重写父类的方法。
2.关于 b.f()
,由于父类没有此方法,因此不能写成a.f()
最后
经过日积月累, 以下是小编归纳整理的深入了解Java虚拟机文档,希望可以帮助大家过关斩将顺利通过面试。
由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!
…(img-B9ZZyGpw-1714498304749)]
[外链图片转存中…(img-74gIdOnQ-1714498304750)]
[外链图片转存中…(img-lgtfLsqs-1714498304750)]
[外链图片转存中…(img-bpuUywXL-1714498304750)]
由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!