java 方法被覆盖,原方法是否消失

解决方案 »

  1.   

    override,翻译成覆盖不是太好,复写好一些。方法是属于类的,子类只可能对父类的方法复写成自己的实现,既无法屏蔽更无法消灭父类的方法。
      

  2.   

    不会覆盖,下面是一个小例子package com.CSDNTemp;class c1{
    public void f1(){
    System.out.println("calling c1.f1,,给分吧,楼主");
    }
    }
    public class csdnTemp extends c1{
    public void f1(){
    System.out.println("calling csdnTemp.f1,多少给点分啊");
    }
    public void test(){
    f1();
    super.f1();
    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    csdnTemp ct = new csdnTemp();
    ct.test();
    }
    }
      

  3.   

    不消失,可以通过super.方法名()调用。
      

  4.   

    子类对父类方法进行重写的时候,也是一种覆盖的情况,这个时候,父类的方法还是存在的,但是如果运行的时候,看的将是子类中的方法。可以使用super的方法调用父类的方法
      

  5.   

    好比父亲和儿子,儿子继承父的特征,用super()方法。父亲还是不会消失的!
      

  6.   

    不消失的,只是在子类中要是用就要super
      

  7.   

    应该是消失了,只不过在子类中还可以调用,因为你在对象中如果一个类被overrider只能调用当前对像的方法,不能调用父类的。
    我们一般只是用的,如果你想学原理,你可以看看jvm原理的书,但总之消失不消失不重要,重要的是被overrider的方法我们不能用了。
      

  8.   

    jvm中会把所有加载的类模板保存起来,比如class A extends children,那么两个类都会分别保存,说白了,你调用super,就是对children类中的一个方法调用,然后返回继续执行A中的其它东西。jvm原理里边说,类中所有的方法是一个类的所有对象共享的所以保存在一个公共的位置,而声明一个对像其实就是给一个变量的属性分配了一块存储空间,也就是说对象中使用的方法不会分配空间,而是共享类中的。这样说:也就是说children类中的方法是存在的,但是不是存在A中而还是存在children类中,只不过,A有一个对children类的指针,A可以引用children类中的方法。理论的东西就是理论,我们只要注重怎么用就可以了。
      

  9.   

    其实他是相当于创建了两个对象(当然只有一个对象),每个对象都有自己的空间域,用super指定父类对象的入口,不用一般表示子类对象入口,当然当子类没有该属性或方法是就是相当默认调用super查找父类入口,查找匹配的属性或方法。
      

  10.   

    应该不会消失吧,它们属于父子关系,用super.Method()还是可以访问的吧