美文网首页
如何理解Java中"父类对象由子类实例化"?

如何理解Java中"父类对象由子类实例化"?

作者: 夏威夷的芒果 | 来源:发表于2020-02-25 15:40 被阅读0次
    import java.io.*;
    
    class A {
        public void fun1() {
            System.out.println("111");
        } //定义父类中非静态的fun1方法
    
        public static void fun2() {
            System.out.println("222");
        } //定义父类中静态的fun2方法
    }
    
    class B extends A {
        public void fun1() {
            System.out.println("333");
        } //覆写父类A中非静态的fun1方法
    
        public static void fun2() {
            System.out.println("444");
        } //覆写父类A中静态的fun2方法
    
        public void fun3() {
            System.out.println("555"); } //定义子类自己的方法
    
    }
    
    class test {
        public static void main(String[] args) throws java.lang.Exception {
            System.out.println("hi");
            A a = new B();
            a.fun1(); // 子类重写父类非静态方法,多态下访问的是子类的成员方法。
            a.fun2(); // 子类重写父类静态方法,多态下访问的是父类的静态方法。
            a.fun3(): // 无法执行,父类中没有定义fun3方法
        }
    }
    

    总结下的话就是:
    1:当父类和子类具有相同的非静态成员变量,那么在多态下访问的是父类的成员变量
    2:当父类和子类具有相同的静态成员变量,那么在多态下访问的是父类的静态成员变量
    所以:父类和子类有相同的成员变量,多态下访问的是父类的成员变量。
    3:当父类和子类具有相同的非静态方法(就是子类重写父类方法),多态下访问的是子类的成员方法。
    4:当父类和子类具有相同的静态方法(就是子类重写父类静态方法),多态下访问的是父类的静态方法。
    @爵士稿手

    相关文章

      网友评论

          本文标题:如何理解Java中"父类对象由子类实例化"?

          本文链接:https://www.haomeiwen.com/subject/ztptchtx.html