java基础问题,java 方法为什么要覆写,在子类中重新写个方法不就好了吗在实际应用时,什么地方用得着

解决方案 »

  1.   


    package test.resources;public class A {
    String code; public String getCode() {
    return code;
    } public void setCode(String code) {
    this.code = code;
    } public void print() {
    System.out.println("Class A:" + code);
    }
    }package test.resources;public class B extends A {
    String name; public String getName() {
    return name;
    } public void setName(String name) {
    this.name = name;
    } @Override
    public void print() {
    // super.print();
    System.out.println("Class B:" + code);
    }}
    package test.resources;
    import org.junit.Test;
    public class T {
    @Test
    public void test(){
    A a = new B();
    a.setCode("abcd");
    a.print();
    }
    }
      

  2.   

    IOC反向控制,你去了解一下嘛。
      

  3.   

    三楼,你好: 代码我能看懂,我的意思是:
          父类的对像实例化子类,然后调用 print 覆盖 父类的 print 
          我的意思是子类不要用print 这个方法名(比方print1),然后 用子类对像实例化本类 B b= new B() ;b.print1();
    不就完事了吗? 
          我是不明白JAVA 为什么要搞个覆盖方法...有什么好处吗?我不能理解
      

  4.   

    写程序有个原则 叫 开闭原则 大概意思是 对修改关闭 对 增加开放   比如有个 动物类(Animal) 这个动物类有 说(say) 这个方法  
    有如下代码要调用这个方法   
    public void show(Animal animal){
         animal.say();
    }
    如果你 有个 狗类(Dog) 传进去   他调用的是狗类 特有狗说(汪) 的方法 
    如果你 有个 狗类(Dog) 传进去   他调用的是猫类 特有猫说(喵) 的方法 
    如果你 传个 人类(你自己) 进去  他就在这里 就有他 人特有 说 (提问) 的方法
    而上面的代码几乎不用改变  
    不知道你明不明白
      

  5.   


    抛开 任何 思想上东西不说你在  B 里 顶一个  print1 方法 
     A a = new B();  创建的对象a    你能调用到   print1 嘛
      

  6.   

    A a=new B();//他创建的是上转型对象,它所使用的变量是继承和覆盖掉的,方法是继承和重写的方法
    而B b=new  B() //它创建的是一般对象b.print1();调用的是子类中的方法
      

  7.   

    动态绑定在C++和Java中都是一样的,这样可以使接口保持最大的适用性,
    接楼上的,比如说有两种动物Dog,Cat类,都继承Animal类,都有叫的动作,定义一个接口函数为animalSound(Animal instance)。当形参为Dog时,instance.cry();为Dog的Cry方法,为Cat时则为Cat的Cry方法,同一个接口不用写两个函数,并且当有新的类Bird等加入时,接口函数也不用改变。
      

  8.   

    在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。