黑马程序员技术交流社区
标题:
继承 覆盖的问题
[打印本页]
作者:
宁超
时间:
2011-10-14 12:34
标题:
继承 覆盖的问题
public class OverDemo
{
public static void main(String args[]){
new NewMethod().method2();
}
}
class Method{
public void method1(){
System.out.println("方法一");
}
public void method2(){
method1();
}
}
class NewMethod extends Method{
public void method1(){
System.out.println("方法三");
}
}
复制代码
结果是输出是 方法三
public class OverDemo
{
public static void main(String args[]){
new NewMethod().method2();
}
}
class Method{
private void method1(){
System.out.println("方法一");
}
public void method2(){
method1();
}
}
class NewMethod extends Method{
public void method1(){
System.out.println("方法三");
}
}
复制代码
输出方法是 方法一
private void method1(){
System.out.println("方法一");
}
不懂的是 private 和public 为什么带来的结果不同
作者:
敖东
时间:
2011-10-14 13:37
private关键字的定义是“除了包含该成员的类之外,其他任何类都无法访问这个成员.”,也就是说只有自己才能直接访问到private成员,其他任何类,包括子类都无法访问到这个成员。
所以父类的 method1是无法被子类覆盖的
作者:
伍碧林
时间:
2011-10-14 13:38
private只是本类访问,protected才是继承类;
private是私有的,其他类是不能访问的,子类也不可以访问,所以你可以重新实现父类的该方法,不会有冲突,但是你重新实现的方法,不叫覆写,是一个该子类新增的方法,和子类的一般扩展方法一样,所以它就执行父类中的method1啦.
可以这么说吧:从父类的private到default或者或者到protected或者到public都不是覆写;
作者:
宁超
时间:
2011-10-14 13:42
敖东 发表于 2011-10-14 13:37
private关键字的定义是“除了包含该成员的类之外,其他任何类都无法访问这个成员.”,也就是说只有自己才能 ...
如果是public
那NewMethod类中没有覆盖父类中的method2方法,意味着主函数调用的是父类中method2方法,而method2应该调用的是父类中的method1吧?
作者:
敖东
时间:
2011-10-14 14:00
NewMethod类继承了Method,也就是说子类中也有method2这个方法,主函数调用的是子函数里面的method2方法
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2