正在回答 回答被采纳积分+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 星