java面试题,请问B类继承A类,而且B类中重写A的方法,请问B中重写的方法可以覆盖了A的方法吗?why?
3个回答
展开全部
覆盖了 你看下面的代码 数据数据的结果是:
Dervied tell name: null
Dervied print name: null
Dervied tell name: dervied
Dervied print name: dervied
public class Dervied extends Base {
private String name = "dervied";
public Dervied() {
tellName();
printName();
}
public void tellName() {
System.out.println("Dervied tell name: " + name);
}
public void printName() {
System.out.println("Dervied print name: " + name);
}
public static void main(String[] args){
new Dervied();
}
}
class Base {
private String name = "base";
public Base() {
tellName();
printName();
}
public void tellName() {
System.out.println("Base tell name: " + name);
}
public void printName() {
System.out.println("Base print name: " + name);
}
}
Dervied tell name: null
Dervied print name: null
Dervied tell name: dervied
Dervied print name: dervied
public class Dervied extends Base {
private String name = "dervied";
public Dervied() {
tellName();
printName();
}
public void tellName() {
System.out.println("Dervied tell name: " + name);
}
public void printName() {
System.out.println("Dervied print name: " + name);
}
public static void main(String[] args){
new Dervied();
}
}
class Base {
private String name = "base";
public Base() {
tellName();
printName();
}
public void tellName() {
System.out.println("Base tell name: " + name);
}
public void printName() {
System.out.println("Base print name: " + name);
}
}
追问
哈哈,其实我自己也写代码验证过了,就是不知道为什么而已
追答
其实你就 把继承当做 是 把父类的 方法复制到 子类 当然 私有的除外
展开全部
可以覆盖,没有为什么,你在B中调用方法的时候,肯定是调用的重写的方法
追问
好吧,应该就是这个道理吧,直接调用了重写的方法
追答
假如调用方法是a();直接调用的话,因为是在B类中,默认是B.a()。你用A.a()试试,应该是父类的方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是可以啊
追问
大哥,why,还有什么叫应该呀
追答
既然是重写了就是把父类的方法覆盖了呀
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询