zoukankan      html  css  js  c++  java
  • 关键字-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。

  • 相关阅读:
    数据库系列之T-SQL(系统内置函数)
    数据库系列之T-SQL(存储过程)
    数据库系列之T-SQL(作业与维护计划)
    数据库系列之T-SQL(触发器)
    数据库系列之T-SQL(事务)
    数据库系列之T-SQL(基础)
    数据库系列之查询(5)
    Nginx + Apache 公用80端口的配置
    客户端putty, xshell连接linux中vim的小键盘问题
    配置EPEL YUM源
  • 原文地址:https://www.cnblogs.com/guochang/p/9554202.html
Copyright © 2011-2022 走看看