使用Java @Override注释的最佳实践是什么?为什么?
使用@Override注释标记每个重写方法似乎有点过分.是否有某些编程情况需要使用@Override和其他不应该使用的@Override?
我们总是说方法重载是静态多态,而重写是运行时多态.静态到底是什么意思?在编译代码时是否解析了对方法的调用?那么正常方法调用和调用最终方法之间的区别是什么?哪一个在编译时链接?
假设我在课堂上有两种方法说
public void eat(int i,String s) 和
public void eat(String s, int i)
那是什么感觉.超载还是覆盖?
我在 eclipse 中对此进行了测试,它没有给我任何例外。但是我无法指定值 x。toString() 可以接受一个参数吗(我知道我下面的例子不是最好的)?
测试.java
public class Test {
public String toString(int x){
return "Hey "+ x;
}
}
Run Code Online (Sandbox Code Playgroud)
主程序
public class Main {
public static void main(String[] args){
System.out.println(new Test());
}
}
Run Code Online (Sandbox Code Playgroud) 我是IOS的新手,任何人都可以告诉IOS中方法重载和覆盖之间有什么区别.我已经完成了这个但是它是java,我想知道IOS一样(目标c或swift,如果可能的话)一些代码)
我们直接进入代码:
public class Father {
public void DoSmth(Father object) {
// Do something else and print
Print(object);
}
public void Print(Father object) {
System.out.println("Father");
}
}
Run Code Online (Sandbox Code Playgroud)
public class Son extends Father {
public void Print(Son object) {
System.out.println("Son");
}
}
Run Code Online (Sandbox Code Playgroud)
public class Main {
public static void main(String[] args) {
Father o1 = new Father();
Son o2 = new Son();
o1.DoSmth(o1);
o1.DoSmth(o2);
}
}
Run Code Online (Sandbox Code Playgroud)
所以,我想得到:
Father
Son
Run Code Online (Sandbox Code Playgroud)
然后,我得到:
Father
Father
Run Code Online (Sandbox Code Playgroud)
我真的不太明白为什么(对于o1.DoSmth(o2))它从父类调用方法,因为o2是Son类型.无论如何我能得到想要的答案吗?
提前致谢
PS:实际上,我想从Father类中调用Print(Son类)方法.可能吗?
java中方法重载和重写的区别?没有给出正确答案。下面是java代码。
家长班
public class Parent {
void display() {
// some code
}
}
Run Code Online (Sandbox Code Playgroud)
儿童班
public class child extends Parent
void display(int a) {
// some code
}
}
Run Code Online (Sandbox Code Playgroud)
问题:这个方法是重载、重写还是无?
java ×6
overriding ×4
overloading ×3
annotations ×1
class ×1
inherited ×1
ios ×1
methods ×1
objective-c ×1
oop ×1
polymorphism ×1
swift ×1