• this关键字和super关键字


      一、this

      Java中为了解决变量的命名冲突和不确定性问题,引入了关键字this。this代表当前类的一个实例,它经常出现在方法和构造方法中,具体使用情况有以下三种:

      1,返回调用当前方法的对象的引用。

    package test;
    
    public class Increase {
        
        private int i = 0;
        public Increase operation(){
            i++;
            return this;
        }
        public void show(){
            System.out.println(i);
        }
        public static void main(String[] args) {
            Increase in = new Increase();
            in.show();
            in.operation().operation().show();;
        }
    }

    上面的this表示的Increase的实例,也就是in。

      2,在构造方法中调用当前类的其它构造方法。

    package test;
    
    public class Person {
        
        private String name;
        private int age;
        private String sex;
        Person(){
            sex = "male";
        }
        Person(String _name){
            this();//这个必须放在构造方法体的开头
            name = _name;
        }
        Person(String _name,int _age){
            this(_name);
            age = _age;
        }
    }

    上面的Person类有三个构造方法,分别为无参的、一个参数的和两个参数的。使用this提高了代码的重复利用。

      3,当方法的参数名和成员变量名相相同时,用于区分参数名和成员变量名。

    public class Person {
        
        private String name;
        private int age;
        private String sex;
    
        public void setName(String name) {
            this.name = name;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    }

       二、super

      super代表父类的实例,在子类中,使用super可以调用其父类的方法、属性和构造方法。

      1,调用父类的构造方法

    public class Student extends Person {
        private String stuNo;
        private String grade;
        
        public Student(){
            super();
        }
        public Student(String name ,String stuNo,String grade){
            super(name);
            this.stuNo = stuNo;
            this.grade = grade;
        }
    }

    调用父类无参的构造函数和单参的构造函数。ps:若父类中无对应的构造函数,将会出现编译错误。

      2,调用父类的属性和方法

    public class Student extends Person {
        private String stuNo;
        private String grade;
        
        public Student(){
            super();
        }
        public Student(String name ,String stuNo,String grade){
            super(name);
            this.stuNo = stuNo;
            this.grade = grade;
        }
        
        public void show(){
            super.show();//调用父类的函数
            System.out.println(stuNo);
            System.out.println(grade);
        }
    }
    身体是革命的本钱,爱跑步,爱生活!
  • 相关阅读:
    HDU 5835 Danganronpa(弹丸论破)
    HDU 5813 Elegant Construction(优雅建造)
    HDU 5831 Rikka with Parenthesis II(六花与括号II)
    HDU 5810 Balls and Boxes(盒子与球)
    HDU 5818 Joint Stacks(联合栈)
    Dream Team(最小生成树)
    带权并查集
    HDU 1495 非常可乐(BFS)
    I Hate It(线段树+更新)
    Just a Hook(线段树+区间更新)
  • 原文地址:https://www.cnblogs.com/caozx/p/9168966.html
Copyright © 2020-2023  润新知