zoukankan      html  css  js  c++  java
  • 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);
        }
    }
    身体是革命的本钱,爱跑步,爱生活!
  • 相关阅读:
    SCRIPT7002: XMLHttpRequest: 网络错误 0x2efe, 由于出现错误 00002efe 而导致此项操作无法完成
    经纬转换成point的sql
    build.xml
    ubuntu下安装vsftpd及vsftpd配置文件不见的解决办法
    500 OOPS: could not read chroot() list file:/etc/vsftpd.chroot_list
    【linux】su、sudo、sudo su、sudo -i的用法和区别
    Js获取上一月份
    BigDecimal工具类
    查询重复的记录
    Excel 合并单元格
  • 原文地址:https://www.cnblogs.com/caozx/p/9168966.html
Copyright © 2011-2022 走看看