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

结论:
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.多态的含义

  源码 地址:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值