关于static方法的重写;父子访问权限问题
关于static方法重写的结论
若父类存在static方法,子类如果需要进行"重写"也必须为static方法。但当声明对象时,对象方法的使用与子类的对象无关,而是与父类的引用有关。
这是父类
public class father {
static void test1(){
System.out.println("father sta");
}
}
public class son extends father {
static void test1() {
System.out.println("son sta");
}
}
下面是测试结果
public static void main(String[] args) {
father a = new son();
son b = new son();
a.test1();
b.test1();
}
按照多态的理论此时无论是a b对象 都应该输出 “son sta”,但由于"重写"的方法为静态方法,故输出结果为
father sta
son sta
由此可以得出 父类的static方法并不能通过重写来实现多态的性质。
关于访问权限的问题
今天复习中,出现子类继承父类放法的访问权限变更的问题。
访问控制权限:public > protected > default > private 说明:default和protected,default是在包内,而protected可以是包外。
子类不能缩小父类方法的访问权限。如若父类方法访问权限为default,则子类不能为private。
但是子类可以夸大父类方法的访问权限,如若父类方法访问权限为default,则子类可以问protected 和public。。
下图为修饰符的范围补充