首先说明继承的特点:
1. 继承覆盖的特点:
子类覆盖父类,必须保证子类权限大于等于父类权限,才可以覆盖,否则编译失败
父类被覆盖的方法不能是private修饰,如果修饰则不为覆盖,父类和子类拥有自己的方法.
静态只能覆盖静态.
方法名称,参数列表,参数类型必须相同,返回值类型相同或者有关系.(子类返回值是父类返回值的子类)
2. 静态方法只与定义时所在的类相关,在编译期就已经绑定到某个类。可以继承,但不能在子类中被同名方法覆盖.
网上有一句话:类的引用指向子类时,当用到方法时,调用的是子类的对象.当用到属性时,用到的是父类对象.这个不适合静态方法.
代码测试如下:
- public class Test1 {
- final int var_final = 100;
- void doit(){
- System.out.println(var_final);
- }
-
- static int myFunction(){
- return 500;
- }
- }
- public class Test2 extends Test1{
- final int var_final = 200;
- public Test2(){
- super();
- }
- void doit(){
- System.out.println(var_final);
- }
- static int myFunction(){
- return 1000;
- }
-
- public static void main(String[] str){
- Test1 test = new Test2();
- System.out.println("var_final = "+test.var_final);
- System.out.println("myFunction = "+test.myFunction());
- }
- }
复制代码 因为不管是静态方法,还是静态成员,他只属于这个类。类对像(Class)没有像实例一样的包容形式。只能各自调用各自的静态成员与方法。
|