Android java基础静态(static)方法的继承和重写,面试常问

Android java基础静态(static)方法的继承和重写,面试常问_第1张图片

结论:
1.java中静态属性和静态方法可以被继承,但是没有被重写(overwrite)
2. 父类静态方法可以被覆盖,允许在子类中定义同名的静态方法,但是没有多态

例子:

public class MysuperTestClass { //父类
    public static String staticStr = "父类静态属性";
    public String nonStaticStr = "父类非静态属性";
    public static void staticMethod(){
        System.out.println("父类静态方法");
    }
    public void nonStaticMethod(){
        System.out.println("父类非静态方法");
    }
}


public class B extends MysuperTestClass {//子类B
    public static String staticStr = "B改写后的静态属性";
    public String nonStaticStr = "B改写后的非静态属性";
    public static void staticMethod(){
        System.out.println("B改写后的静态方法");
    }
    public void nonStaticMethod(){
        System.out.println("B改写的非静态方法");
    }
    public String bb;
}


public class C extends MysuperTestClass {
   
}


/**
 * 父类静态方法可以被覆盖,允许在子类中定义同名的静态方法,但是没有多态。
 */

System.out.println("-------------------------------");
B b = new B();
System.out.println(b.nonStaticStr);
System.out.println(b.staticStr);
b.staticMethod();
b.nonStaticMethod();

System.out.println("-------------------------------");
MysuperTestClass b1 = new B();
System.out.println(b1.nonStaticStr);
System.out.println(b1.staticStr);
b1.staticMethod();//和下面的非静态方法比较,说明静态方法不可以被重写,不能实现多态
b1.nonStaticMethod();


需要先明白一下的区别:
 1. MysuperTestClass b1 = new B();
   B b = new B();
2.多态的含义

  源码 地址:

你可能感兴趣的:(Android java基础静态(static)方法的继承和重写,面试常问)