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。

  • 相关阅读:
    Autocomplete 使用——尽信书则不如无书!
    SQL累加注意点
    自己写的一个可行且简单的FTP操作类
    分割表值函数
    转载SQL游标
    一个存储过程包含了很多很多
    转载预防SQL注入攻击之我见
    Jquery温习1
    WMI远程启动软件(某个应用程序)
    struts如何实现国际化(转)
  • 原文地址:https://www.cnblogs.com/guochang/p/9554202.html
Copyright © 2011-2022 走看看