Java 中无效的方法重载
原文:https://www . geesforgeks . org/invalid-method-overload-in-Java/
重载方法是属于同一个类的方法,具有相同的名称但不同的参数。方法重载的概念来源于多态性。字面上的“聚”意味着很多,“态射”意味着形式。
考虑一个现实生活中的水多态的例子,因为它可以采取多种形式(固体,液体和气体)。同样,在 java 中,我们可以在同一个类中创建多个同名的方法。在这里,我们将讨论 java 中的无效方法重载,但是在此之前,让我们简单地回顾一下方法重载。
方法重载的条件
- 我们可以在同一个类中创建多个同名的方法。
- 参数的数量、顺序和类型应该不同。
说明:方法重载
Java 语言(一种计算机语言,尤用于创建网站)
// Java Program to Illustrate Method Overloading
// Main class
class GFG {
// Method 1
void show()
{
// Print statement
System.out.println("Method to be overloaded.");
}
// Method 2
// Overloading Method 1
// by changing arguments
void show(int x)
{
// Print statement
System.out.println("Overloaded method:: 1");
}
// Method 3
// Overloading show method by changing arguments
void show(String a, int x)
{
System.out.println("Overloaded method:: " + x);
}
// Method 4
// Overloading show method
// by changing arguments
void show(String a, int b, boolean c)
{
System.out.println("Overloaded method:: " + b);
}
// Method 5
// Overloading Method 1 by
// changing arguments as well as return type
String show(String s)
{
// Print statement
return "Overloaded method:: 5";
}
// Method 6
// Main driver method
public static void main(String[] args)
{
// Creating object of class inside main()
GFG obj = new GFG();
// Calling all methods as defined above
// to seek overloading concepts
obj.show();
obj.show(1);
obj.show("String", 2);
obj.show("String", 3, true);
System.out.println(obj.show("String"));
obj.show('a');
}
}
输出-
Method to be overloaded.
Overloaded method:: 1
Overloaded method:: 2
Overloaded method:: 3
Overloaded method:: 5
Overloaded method:: 1
无效方法重载情况什么时候出现?
无效方法重载情况的出现是由于以下原因:
- 如果我们试图调用多个具有相同名称和参数列表的方法。这可以从代码块 1 中证明。
- 当我们试图仅通过更改返回类型来重载方法时。这可以从代码块 2 中证明。
实施:
考虑下面给出的例子。当我们试图调用“ add(1,2) ”方法时,编译器会感到困惑,因为没有这样的指令倾向于 int 而不是 double,反之亦然,结果,它会显示一个编译错误。
int add(int a, int b)
double add(int a, int b)
实施例 1-A
Java 语言(一种计算机语言,尤用于创建网站)
// Demo class
class Demo {
// Programmer defined "mymethod"
public int myMethod(int num1, int num2)
{
System.out.println("First myMethod of class Demo");
return num1 + num2;
}
// Trying to overload "mymethod"
public int myMethod(int num3, int num4)
{
System.out.println("Second myMethod of class Demo");
return num4 - num3;
}
}
// Driver class
class GFG {
// main method
public static void main(String args[])
{
Demo obj1 = new Demo();
obj1.myMethod(1, 2);
obj1.myMethod(3, 4);
}
}
输出:
prog.java:7: error: method myMethod(int,int) is already defined in class Demo
public int myMethod(int num3, int num4)
^
1 error
例 1-B
Java 语言(一种计算机语言,尤用于创建网站)
// Java Program to Illustrate No Roleplay of Returntype
// Even changed in Method Overloading
// Main class
class GFG {
int a, b;
// Declared method
void add(int x, int y)
{
// This refers to current instance itself
this.a = x;
this.b = y;
// Printing the sum
System.out.println("SUM:: " + (a + b));
}
// Method 2
// To add numbers
// Overloading the above declared method by
// changing the return type only
double add(int x, int y)
{
this.a = x;
this.b = y;
return a + b;
}
// Method 3
// Main method method
public static void main(String[] args)
{
// Creating object of class inside main()
GFG obj = new GFG();
// Calling add() method by passing
// custom inputs as parameters
obj.add(5, 2);
// Trying printing the sum
System.out.println("Sum:: " + obj.add(3, 4));
}
}
输出:
prog.java:8: error: method add(int,int) is already defined in class GFG
double add(int x,int y){
^
prog.java:17: error: 'void' type not allowed here
System.out.println("Sum:: "+obj.add(3,4));
^
2 errors
结论:我们不能调用多个同名的方法和参数列表。方法的返回类型在方法重载中不起任何作用,在 java 中,仅仅通过改变方法的返回类型是不可能实现重载的。
版权属于:月萌API www.moonapi.com,转载请注明出处