• 关键字-super


    super可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类。

        
        String name;
        int age;
        
        void value(){
            name = "张三";
            age = 20;
        }
    }
    
    class UserAction extends BaseAction{
        
    }
    
    class Main extends UserAction{
        
        String name;
        int age;
        
        public static void main(String[] args){
            Main m = new Main();
            m.value();
        }
        
        void value(){
            super.value();
            name = super.name;
            age = super.age;
            
            System.out.println(name);
            System.out.println(age);
        }
        
    }

    运行结果:

    张三
    20

        
        String name;
        int age;
        
        void value(){
            name = "张三";
            age = 20;
        }
    }
    
    class UserAction extends BaseAction{
        String name;
        int age;
        
        void value(){
            name = "李四";
            age = 21;
        }
    }
    
    class Main extends UserAction{
        
        String name;
        int age;
        
        public static void main(String[] args){
            Main m = new Main();
            m.value();
        }
        
        void value(){
            super.value();
            name = super.name;
            age = super.age;
            
            System.out.println(name);
            System.out.println(age);
        }
        
    }

    运行结果:

    李四
    21

        
        String name;
        int age;
        
        void value(){
            name = "张三";
            age = 20;
        }
    }
    
    class UserAction extends BaseAction{
        String name;
        
        void value(){
            name = "李四";
        }
    }
    
    class Main extends UserAction{
        
        String name;
        int age;
        
        public static void main(String[] args){
            Main m = new Main();
            m.value();
        }
        
        void value(){
            super.value();
            name = super.name;
            age = super.age;
            
            System.out.println(name);
            System.out.println(age);
        }
        
    }

    运行结果:

    李四
    0

    总结:super.value()指向的是父类,但是父类中并不存在age,所以这时候age的值是默认值0。

        
        String name;
        int age;
        
        void value(){
            name = "张三";
            age = 20;
        }
    }
    
    class UserAction extends BaseAction{
        String name;
        
        void value(){
            super.value();
            name = "李四";
        }
    }
    
    class Main extends UserAction{
        
        String name;
        int age;
        
        public static void main(String[] args){
            Main m = new Main();
            m.value();
        }
        
        void value(){
            super.value();
            name = super.name;
            age = super.age;
            
            System.out.println(name);
            System.out.println(age);
        }
        
    }

    运行结果:

    李四
    20

    总结:super.value()指向的是父类,但是父类中并不存在age,所以在父类中执行super.value(),让父类去调用自身父类的方法,这时候age才被赋值。因为在Main类中的value()方法中执行的super指向的是UserAction。

        
        String name;
        int age;
        
        void value(){
            name = "张三";
            age = 20;
        }
    }
    
    class UserAction extends BaseAction{
        String name;
        int age;
        
        void value(){
            name = "李四";
            age = 21;
        }
    }
    
    class Main extends UserAction{
        
        String name;
        int age;
        
        public static void main(String[] args){
            Main m = new Main();
            m.value();
        }
        
        void value(){
            name = super.name;
            age = super.age;
            
            System.out.println(name);
            System.out.println(age);
        }
        
    }

    运行结果:

    null
    0

    总结:既调用父类的value()方法又调用父类的变量。如果只调用类型的变量,不调用父类的value()方法,name的值就是默认值null,age的值就是默认值0。

  • 相关阅读:
    程序猿之歌
    How to solve the problem : "You have been logged on with a temporary profile"
    LeetCode Jump Game
    hdu 3496 Watch The Movie
    matlab矩阵内存预分配
    【Windows socket+IP+UDP+TCP】网络基础
    <html>
    行为类模式(十):模板方法(Template Method)
    行为类模式(九):策略(Strategy)
    行为类模式(八):状态(State)
  • 原文地址:https://www.cnblogs.com/guochang/p/9554202.html
Copyright © 2020-2023  润新知