就Java而言,当有人问:
什么是多态?
将超载或重载是一个可以接受的答案?
我认为还有更多的东西.
如果您有一个抽象基类定义了一个没有实现的方法,并且您在子类中定义了该方法,那还是会覆盖吗?
我认为超载肯定不是正确的答案.
这似乎是一个愚蠢的问题,但为什么我们覆盖equals方法而不是使用新名称创建一个新方法并使用它进行比较?
如果我没有覆盖equals那意味着两者都==等于检查两个引用是否都指向相同的内存位置?
我们总是说方法重载是静态多态,而重写是运行时多态.静态到底是什么意思?在编译代码时是否解析了对方法的调用?那么正常方法调用和调用最终方法之间的区别是什么?哪一个在编译时链接?
由于我已经找到了很多关于方法重载的例子和结论,但我仍然在实时混淆我们如何使用它.
首先,方法重载是一个类级活动意味着在该类中我们正在重载一个具有相同名称但不同参数的方法
void sum(int a,int b){System.out.println(a+b);}
void sum(double a,double b){System.out.println(a+b);}
Run Code Online (Sandbox Code Playgroud)
在我们调用这个方法之后
public static void main(String args[]){
ClassName obj=new ClassName ();
obj.sum(10.5,10.5);
obj.sum(20,20);
}
Run Code Online (Sandbox Code Playgroud)
假设不是这个,我将采取两个单独的方法,如
void method1(int a,int b){System.out.println(a+b);}
void method2(double a,double b){System.out.println(a+b);}
Run Code Online (Sandbox Code Playgroud)
我将这两种方法称为上述相同的方法
public static void main(String args[]){
ClassName obj=new ClassName ();
obj.method1(20,20);
obj.method2(10.5,10.5);
}
Run Code Online (Sandbox Code Playgroud)
在两种方法的情况下,活动都是相同的,那么在这种情况下,重载/多态的确切需要是什么.
在某处我发现方法重载增加了程序的可读性,任何人都可以指定只因为这行我们正在使用方法重载.
谢谢.