-6

这是一个示例程序

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中这个概念是什么?

4

5 回答 5

4

这个概念在 JAVA 中叫什么?

这不是一个概念,您在两个不相关的类中将方法命名为相同。如果其中一个类是另一个类的子类,则根据方法签名,它将被覆盖重载

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

 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();
  }
}
于 2013-07-30T06:01:41.040 回答
2

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

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

于 2013-07-30T06:01:58.037 回答
1

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

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

据您所知,与父类具有相同签名的子类中的方法称为重写方法。这是一个 OOPS 方法的压倒一切的概念。

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

于 2013-07-30T06:02:54.213 回答
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

于 2013-07-30T06:20:32.420 回答
-1

如果其中一个类是另一个类的子类 then ,它将被覆盖或重载。

于 2013-07-30T06:04:17.750 回答