分为四种情况:
1.第一种情况:父类中有,而子类中没有的方法
2.第二种情况:父类中没有,而子类中有的方法
3.第三种情况:父类中有,子类中也有的方法
4.第四种情况:父类和子类都有,但都是静态方法
代码举例分析:
父类:SuperClass
子类:SubClass
方法:父类中:doWork1()doWork()static doWork3()
          子类中:doWork2()doWork()static doWork3()

    public static void main(String[] args) {
        SuperClass a=new subClass();

        //第一种情况:父类中有,而子类中没有的方法
        a.doWork1();//输出:SuperClass.doWork1,调用了父类中存在的方法

        //第二种情况:父类中没有,而子类中有的方法
        //a.doWork2();//编译错误,因为编译的时创建的是编译类型,也就是SuperClass类型,
                    //而该类中没有doWork2()方法,会报错

        //第三种情况:父类中有,子类中也有的方法
        a.doWork();//输出:subClass.doWork,体现了多态的特性,调用了子类特定的方法(对象的运行类型)

        //第四种情况:父类和子类都有,但都是静态方法
        a.doWork3();//输出:SuperClass.doWork
        /*
         * 分析:静态方法和对象没有关系,访问时用的类名调用(SuperClass.doWork()),也就是用的时编译类型,即父类中的方法.
         *       这种情况称为隐藏,而不是覆盖。只有与对象有关的才称为覆盖。
         */
    }
}
class SuperClass{
    public void doWork1(){//只在父类
        System.out.println("SuperClass.doWork1");
    }
    public void doWork(){//子类父类都有
        System.out.println("SuperClass.doWork");
    }
    public static void doWork3(){//子父类都有的static方法
        System.out.println("SuperClass.doWork");
    }
}
class subClass extends SuperClass{
    public void doWork2(){//只在子类
        System.out.println("subClass.doWork2");
    }
    public void doWork(){//子类父类都有
        System.out.println("subClass.doWork");
    }
    public static void doWork3(){//子父类都有的static方法
        System.out.println("subClass.doWork");
    }
网络上志同道合,我们一起学习网络安全,一起进步,QQ群:694839022