正在回答 回答被采纳积分+1
1回答
好帮手慕阿莹
2019-02-12 18:39:02
1、静态方法在子类中可以通过隐藏父类方法的方式重新实现:
如果父类中有一个静态的方法,子类也有一个与其方法名,参数类型,参数个数都一样的方法,并且也有static关键字修饰,那么该子类的方法会把原来继承过来的父类的方法隐藏,而不是重写。
如下图所示,如果我们给子类的test()方法加上注解@Override 就会报错(该注解可以验证是否是重写的父类或接口中的方法)
如果去掉该注解,这个test()方法是可以使用的:
package test03; public class C { public static void main(String[] args) { A a =new B(); a.test(); B b = new B(); b.test(); } }
package test03; public class A { public static void test() { System.out.println("这是父类的静态方法"); } }
package test03; public class B extends A{ public static void test() { System.out.println("这是子类的静态方法"); } }
2、假如子类要重写父类中的方法:
子类重写这个方法访问权限的修饰符必须大于父类:
例如:父类test1()方法的修饰符是:protected
那么子类重写该方法时,修饰符必须是protected 及其以上权限范围的 ,例如,默认的,public 的
如果写成private就会报错了:
package test03; public class B extends A{ public static void test() { System.out.println("这是子类的静态方法"); } /*@Override public void test1() { System.out.println("这是子类重新父类的方法"); }*/ /*@Override private void test1() { System.out.println("这是子类重新父类的方法"); }*/ @Override protected void test1() { System.out.println("这是子类重新父类的方法"); } }
package test03; public class A { public static void test() { System.out.println("这是父类的静态方法"); } protected void test1() { System.out.println("这是父类普通方法"); } }
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
Java零基础入门18
- 参与学习 人
- 提交作业 7317 份
- 解答问题 14452 个
想要入门学编程?多年一直活跃在编程语言排行版前列的Java是一个很好的选择。本路径将从Java基础语法、面向对象、常用工具类三部分,为你开启软件开发的大门!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星