- 被final修饰的父类在子类中无法被重写
public class SuperClass {
final String name = "linjunjie";
public final void doSomething(){
System.out.println("SuperClass doSomething");
}
}
class SubClass extends SuperClass {
String name = "ljj";
//doSomething是final方法,无法被重写
//子类只能在另一个函数中实现重写的逻辑
protected void overrideDoSomething() {
System.out.println("sub class do something");
}
public static void main(String[] args) {
SuperClass s = new SubClass();
s.doSomething();
System.out.println(s.name);
}
}
日志
SuperClass doSomething
linjunjie
Process finished with exit code 0
大佬说:只有方法有动态连接,属性是没有的。
- JVM过程:
也就是在堆里面创建一个superClass的对象,在栈里面创建指向对象的指针,然后当执行这个对象的时候,在堆里面创建Method对象,对应的是方法区里面SuperClass的方法,然后在栈里面创建指向堆中Method对象的指针。
类加载时: 方法信息保存在一块du称为方法区的内存中, 并不随你创建对象而zhuan随对象保存于堆中。
另外:
其中父类中的成员变量优先于子类,其他同上