相同的方法名称但不同的类名称

时间:2013-07-30 05:59:30

标签: java

这是一个示例程序

class abc {
    void show() {
        System.out.println("First Class");
    }
}

class def {
    void show() {
        System.out.println("Second Class");
    }
}

class demo {
    public static void main(String args[]) {
        abc a1 = new abc();
        def a2 = new def();
        a1.show();
        a2.show();
    }
}

现在我想问的是有两个不同的类,但它们具有相同的方法名称和相同的参数, 这个概念在JAVA中被称为什么?

5 个答案:

答案 0 :(得分:4)

  

这个概念在JAVA中被称为什么?

这不是一个概念,你在两个不相关的类中命名了相同的方法。如果其中一个类是另一个类的子类,那么根据方法签名,它可能是overridingoverloading

如果其中一个类是另一个类的子类,那么您将实现运行时多态性:

 class abc {
  void show() {
    System.out.println("First Class");
  }
}

// def extends from abc
class def extends abc {
  // show() method was overridden here
  void show() {
    System.out.println("Second Class");
  }
}

class demo {
  public static void main(String args[]) {
    // Use the reference type abc, object of type abc
    abc a1 = new abc();
    // Use the reference type abc, object of type def
    abc a2 = new def();
    // invokes the show() method of abc as the object is of abc
    a1.show();
    // invokes the show() method of def as the object is of def
    a2.show();
  }
}

答案 1 :(得分:2)

  

现在我想问的是,有两个不同的类,但它们具有相同的方法名称和相同的参数,在Java中调用这个概念是什么?

这里没有“概念” - 它们只是不相关的方法。要关联它们,该方法必须在两个类实现的超类或接口中声明。然后,这将允许以多态方式调用该方法,调用者只能知道该接口。

答案 2 :(得分:1)

  

现在我想问的是,除了它们之外,还有两个不同的类   有相同的方法名称和相同的参数,这个概念叫什么   在JAVA?

这不是特殊的OOPS或Java功能。任何独立(未通过某些层次结构连接)类都可以具有相同的方法签名。

根据您的了解,具有与父级相同签名的子类中的Method称为重写方法。这是一种覆盖概念的OOPS方法。

另一个OOPS概念是方法重载,它位于具有相同名称但输入参数不同的方法的类中。

答案 3 :(得分:0)

这不是java

中的概念

如果一个类从其超类继承一个方法,那么只要它没有标记为final,就有可能覆盖该方法。 例如

 class Animal{

   public void move(){
      System.out.println("Animals can move");
   }
}

class Dog extends Animal{

   public void move(){
      System.out.println("Dogs can walk and run");
   }
}

public class TestDog{

   public static void main(String args[]){
      Animal a = new Animal(); // Animal reference and object
      Animal b = new Dog(); // Animal reference but Dog object

      a.move();// runs the method in Animal class

      b.move();//Runs the method in Dog class
   }
}

类中的重载方法可以具有相同的名称,并且它们具有不同的参数列表

public class DataArtist {
    ...
    public void draw(String s) {
        ...
    }
    public void draw(int i) {
        ...
    }
    public void draw(double f) {
        ...
    }
    public void draw(int i, double f) {
        ...
    }
}

参考链接:http://docs.oracle.com/javase/tutorial/java/javaOO/methods.html

答案 4 :(得分:-1)

如果其中一个类是另一个类的子类,那么它就会被覆盖或重载。