java遗珠之隐藏和覆盖

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lastsweetop/article/details/82857467

1.只有实例方法有覆盖,类方法,类变量和实例变量都是隐藏。

2.覆盖的意思就是会调用具体的子类,而隐藏就看谁去调用。

3.类变量可以隐藏实例变量,实例变量也可也隐藏类变量。

4.类方法和实例方法无法相互覆盖和隐藏。

例子如下:

class Father {
    int a = 1;

    static void b() {
        System.out.println("father b");
    }

}

public class Son extends Father {
    static int a = 2;

    static void b() {
        System.out.println("son b");
    }



    public static void main(String[] args) {
        Father f = new Son();
        System.out.println(f.a);
        f.b();

        Son s=new Son();
        System.out.println(s.a);
        s.b();
    }
}

需要说明的是字段即使类型不同也会被隐藏哦,你们可以改改这个例子试下

展开阅读全文

关于java中的覆盖隐藏

12-05

覆盖和隐藏到底是怎么回事?我在网上查阅了一些资料,但还是没弄明白。谁能给我个确切而肯定回答?rn-------------rn参考1:http://topic.csdn.net/t/20050821/00/4221052.htmlrnpublic class classA rn public void methodOne(int i) rn public void methodTwo(int i) rn public static void methodThree(int i) rn public static void methodFour(int i) rn rn rn public class classB extends classA rn public static void methodOne(int i) rn public void methodTwo(int i) rn public void methodThree(int i) rn public static void methodFour(int i) rn rn 1 问那些方法隐藏了父类的方法? rn rn 2 问那些方法覆盖了父类的方法? rn答案:rn1 methodFour rn2 methodTwo rn 其他两个方法编译是无法通过的,要么给methodThree,methodOne加上static,要么去掉static.rn-----------rn参考2:http://topic.csdn.net/t/20051205/08/4437722.htmlrn 覆盖和重载完全是两码事!覆盖就是子类的方法跟父类的方法具有完全一样的签名和参数,而重载是签名相同参数不同,可以是同一个类也可以是子类跟父类! rn 隐藏一般是对成员变量和静态方法来说的,网上的代码: rn class Planet rn public static void hide() rn System.out.println("The hide method in Planet."); rn rn rn public void override() rn System.out.println("The overrid method in Planet."); rn rn ; rn rn public class Earth extends Planet rn public static void hide() rn System.out.println("The hide method in Earth."); rn rn rn public void override() rn System.out.println("The override method in Earth."); rn rn rn public static void main(String[] args) rn Earth myEarth = new Earth(); rn Planet myPlanet = (Planet) myEarth; rn myPlanet.hide(); rn myPlanet.override(); rn rn rnrn 论坛

没有更多推荐了,返回首页