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。

  • 相关阅读:
    利用ganymed-ssh2远程执行其它Linux机器上的shell命令
    ZooKeeper 笔记(4) 实战应用之【消除单点故障】
    ZooKeeper 笔记(3) 实战应用之【统一配置管理】
    ZooKeeper 笔记(2) 监听数据变化
    ZooKeeper 笔记(1) 安装部署及hello world
    intellij idea 高级用法之:集成JIRA、UML类图插件、集成SSH、集成FTP、Database管理
    hadoop: hive 1.2.0 在mac机上的安装与配置
    mac 下卸载mysql的方法
    mac OS X Yosemite 上编译hadoop 2.6.0/2.7.0及TEZ 0.5.2/0.7.0 注意事项
    hadoop: hbase1.0.1.1 伪分布安装
  • 原文地址:https://www.cnblogs.com/guochang/p/9554202.html
Copyright © 2011-2022 走看看