编译时类型 和运行时类型的 区别(1)
class T{
void f(int x){
System.out.println("int in T:" +x);
}
void f(double x){
System.out.println("double in T:"+x);
}
void f(Object x){
System.out.println("Object in T:" +x);
}
}
class S extends T{
void f(int x){ //子類覆蓋基類方法
System.out.println("int in S:" +x);
}
void f(float x){
System.out.println("float in s:" +x);
}
}
public class quest3{
public static void main(String[] args) {
T t=new S();
// t編譯時類型 調用 T的方法 并判斷子類是否有覆蓋
t.f(20); // 基類方法被子類覆蓋 輸出子類 int in s
t.f(20L); //基類方法
t.f(3.5f); //基類方法
t.f(3.5); //基類方法
t.f("abcdef"); //基類方法
}
}
?
?
輸出結果:
int in S:20
double in T:20.0
double in T:3.5
double in T:3.5
Object in T:abcdef
轉載于:https://www.cnblogs.com/jiangyi666/p/5753555.html
總結
以上是生活随笔為你收集整理的编译时类型 和运行时类型的 区别(1)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 长网页截屏
- 下一篇: Wpf Binding.Path设置