当我运行这个程序时:
class Baap {
public int h = 4;
public int getH() {
System.out.println("Baap " + h);
return h;
}
}
public class Beta extends Baap {
public int h = 44;
public int getH() {
System.out.println("Beta " + h);
return h;
}
public static void main(String[] args) {
Baap b = new Beta();
System.out.println(b.h + " " + b.getH());
Beta bb = (Beta) b;
System.out.println(bb.h + " " + bb.getH());
}
}
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
Beta 44
4 44
Beta 44 …Run Code Online (Sandbox Code Playgroud) 我用过:
System.out.println(Person.class.getDeclaredMethods().length);
在这里获取此类的方法数:
class Person {
private String name;
Person(String newName) {
name = newName;
}
public String getName() {
return name;
}
public void setName(String val) {
name = val;
}
}
Run Code Online (Sandbox Code Playgroud)
我为这个类计算了三个方法,但getDeclaredMethods().length只计算了两个方法.我错过了什么?
我有以下代码,但我不明白为什么当我运行它打印"b"前打印"h hn x".为什么"b"获得,因为在所有我不是父类印刷Building在所有当我执行House().
class Building {
Building() {
System.out.print("b ");
}
Building(String name) {
this();
System.out.println("bn " + name);
}
}
public class House extends Building {
House() {
System.out.println("h ");
}
House(String name) {
this();
System.out.println("hn " + name);
}
public static void main(String[] args) {
new House("x ");
}
}
Run Code Online (Sandbox Code Playgroud)