Java的静态方法继承相关

来源:互联网 发布:矩阵加常数 编辑:程序博客网 时间:2024/06/06 05:00
import java.util.*;public class Homeworks {public static void fun() {System.out.println("Father");}public void Haha() {System.out.println("FatherHaha");}public static void main(String[] args) {Son son = new Son();Homeworks fson = new Son(); //用父类声明son.fun();son.fun(1);System.out.println();((Son)fson).fun();((Son)fson).fun(1);System.out.println();fson.fun();//fson.fun(1);  报错System.out.println();son.Haha();fson.Haha();//fson.Try();  报错  由于找不到子类的这个方法}}class Son extends Homeworks {public static void fun() { System.out.println("Son");}public static void fun(int a) {System.out.println("ReSon");}public void Haha() {System.out.println("SonHaha");}public void Try() {System.out.println("Try");}}


/*运行结果SonReSonSonReSonFatherSonHahaSonHaha*/


记得老师有一句话:叫“编译看左边,运行看右边”。甚是经典。

因为编译看左边,所以用父类申明的对象不能直接调用子类里特有的方法,需要强制类型转换才能调用。

因为运行看右边,所以调用被子类覆盖的方法时,运行子类里定义的方法(及真正的构建类里的方法)。

1 0
原创粉丝点击