继承,重写,静态方法的混合 大神过来帮我解答一下,在此先谢了! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 static修饰的方法属于类。虽然用对象调用,其实底层依然使用的类名来调用。a的类型为A。所以,a.show(); 等价于A.show ();因此执行的方法依然是A类中的方法! class A{ public static void me1(){ System.out.println(1111); } public void me2(){ System.out.println(1111); }}class B extends A{ @Override public static void me1(){ System.out.println(1111); } @Override public void me2(){ System.out.println(1111); }}可以在子类的方法名上加上@Override注解,如果报错就不是重写 static修饰的方法为类的方法,属于类,不属于对象实例。A a=new B();a.show();这里的a.show(),看似是a这个对象实例调用了show方法,但是由于这是静态方法,不属于a这个对象实例,而属于A这个类, 等同于A.show(),所以结果是AAA 首先要知道,为什么需要重写(Override)?因为一个对象里不能有两个签名一样的方法。但是,static 方法不是在对象中的,是在类,既然A和B是两个不同的类,那么也就不存在static方法重写的必要了,所以这里不会重写,事实上,Java称之为Hiding.参考https://stackoverflow.com/questions/2475259/can-i-override-and-overload-static-methods-in-java 大牛们谁能帮我解释一下自定义Annotation 能有什么用?--传道授业解惑不甚感激 急!关于java的原始数据类型及其封装类 求助一个读取XML的问题 java中的对象大小 刚接触java,请教菜单的问题 有没有四舍五入的函数?或者求有效数字,精度的函数啊?如何实现 关于log4j配置文件的问题?请大家多多指教!!! JAVA的IO相关程序修改 帮忙看一下这个SQL对不,谢谢! 救命!!!! java与银行的POS机如何交互 文件字符集
虽然用对象调用,其实底层依然使用的类名来调用。
a的类型为A。
所以,a.show(); 等价于A.show ();
因此执行的方法依然是A类中的方法!
class A{
public static void me1(){
System.out.println(1111);
}
public void me2(){
System.out.println(1111);
}
}
class B extends A{
@Override
public static void me1(){
System.out.println(1111);
}
@Override
public void me2(){
System.out.println(1111);
}
}
可以在子类的方法名上加上@Override注解,如果报错就不是重写
a.show();这里的a.show(),看似是a这个对象实例调用了show方法,但是由于这是静态方法,不属于a这个对象实例,而属于A这个类, 等同于A.show(),所以结果是AAA
因为一个对象里不能有两个签名一样的方法。
但是,static 方法不是在对象中的,是在类,既然A和B是两个不同的类,那么也就不存在static方法重写的必要了,所以这里不会重写,事实上,Java称之为Hiding.
参考
https://stackoverflow.com/questions/2475259/can-i-override-and-overload-static-methods-in-java