JAVA隐藏与覆盖

  • 都是由于子类声明了与父类同名的变量或 方法引起的
  • 隐藏的话父类的属性和行为并未失去,通过相应子类的引用仍可访问
  • 覆盖(重写),父类的属性和行为已被子类重定义的属性和行为覆盖,通过相应子类的引用不能访问(父类的对象才行)
  • 父类的静态成员函数只能隐藏,不能覆盖
  • 只有实例方法才能体现多态

如:

假设有一个父类Father和一个子类Son。父类有一个成员变量a=0;有一个静态成员变量b=0;有一个成员方法f,输出0;有一个静态成员方法g,输出0。子类分别重写这些变量和方法,只是修改变量的值和方法的输出,全部改为1.   我们再声明一个静态类型是父类,动态类型是子类的引用:

Father father=new Son();

结果:father.a=0

father.b=0

father.f():1

father.g():0

package test;

//声明父类
class Father{
    static int a=0;
    int b=0;
    void f() {
        System.out.println(0);
    }
    static void g() {
        System.out.println(0);
    }
}
//声明子类
class Son extends Father{
    static int a=1;
    int b=1;
    void f() {
        System.out.println(1);
    }
    static void g() {
        System.out.println(1);
    }
}

/* 隐藏和覆盖的区别 */
public class HideAndCover {
    public static void main(String[] args) {
        Father father=new Son();
        System.out.println(father.a);
        System.out.println(father.b);
        father.f();
        father.g();
    }

}

0

0

1

0

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值