Java 继承后成员的隐藏与重写

1、子类没有定义成员
  1. BaseCommonStore.java
public class BaseCommonStore {
    public static final String TAG = "TAG:" + BaseCommonStore.class.getSimpleName();

    public static void sayHello() {
        System.out.println(TAG + " sayHello");
    }

    public String tag = "tag:" + BaseCommonStore.class.getSimpleName();

    public void sayOk() {
        System.out.println(tag + " sayOk");
    }
}
  1. CommonStore.java
public class CommonStore extends BaseCommonStore {
}
  1. test
System.out.println(CommonStore.TAG);
CommonStore.sayHello();

CommonStore commonStore = new CommonStore();

System.out.println(commonStore.tag);
commonStore.sayOk();
# 输出结果

TAG:BaseCommonStore
TAG:BaseCommonStore sayHello
tag:BaseCommonStore
tag:BaseCommonStore sayOk
2、子类定义同名成员
  1. BaseCommonStore.java
public class BaseCommonStore {
    public static final String TAG = "TAG:" + BaseCommonStore.class.getSimpleName();

    public static void sayHello() {
        System.out.println(TAG + " sayHello");
    }

    public String tag = "tag:" + BaseCommonStore.class.getSimpleName();

    public void sayOk() {
        System.out.println(tag + " sayOk");
    }
}
  1. CommonStore.java
public class CommonStore extends BaseCommonStore {
    public static final String TAG = "TAG:" + CommonStore.class.getSimpleName();

    public static void sayHello() {
        System.out.println(TAG + " sayHello");
    }

    public String tag = "tag:" + CommonStore.class.getSimpleName();

    public void sayOk() {
        System.out.println(tag + " sayOk");
    }
}
  1. test
System.out.println(CommonStore.TAG);
CommonStore.sayHello();

CommonStore commonStore = new CommonStore();

System.out.println(commonStore.tag);
commonStore.sayOk();
# 输出结果

TAG:CommonStore
TAG:CommonStore sayHello
tag:CommonStore
tag:CommonStore sayOk
小结
成员 示例 1 示例 2
静态变量 继承父类 隐藏父类
静态方法 继承父类 隐藏父类
实例变量 继承父类 隐藏父类
实例方法 继承父类 重写父类
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐