当Java中的类继承另一个类时,继承的类是否(继续)成为继承类的一部分,以便将其字节代码添加到继承类的.class文件中?或继承类的.class文件是否仅包含特定于它的部分,并且在运行时,两个类的两个.class文件中的对象详细信息一起构建到一个对象中?如果其中一个或两个类都是通用的,它会对该过程产生影响吗? THX。
答案 0 :(得分:1)
当A扩展B时,只有信息被写入A的类文件中。
没有任何形式的代码从B.class复制到A.class。含义:当您更改B时,通常无需重新编译A.
泛型主要是编译时功能 - 任何泛型类型都会在字节码中变成 Object (称为type erasure)。类文件包含一些关于哪些实体被声明为泛型类型的元信息,但这就是全部。换句话说:Java泛型不与C ++模板相同。
答案 1 :(得分:0)
第二个,例如,如果您编译以下两个类:
public class Parent {
public void myMethod(String arg) {
}
}
public class Child extends Parent {
public void myMethod(String arg) {
super.myMethod(arg);
}
}
然后,在编译完两个类之后,将类更改为:
public class Parent {
public void myMethod(Integer arg) {
}
}
您将获得NoSuchMethodError,这是因为Child
在运行时调用了父myMethod
。
我希望很清楚,再见。