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);
        }
    }
    身体是革命的本钱,爱跑步,爱生活!
  • 相关阅读:
    live555学习之RTSP连接建立以及请求消息处理过程
    RTSP协议学习笔记
    RTP头结构解析
    Doubango ims 框架 分析之 多媒体部分
    VMware虚拟机 NAT模式 配置静态ip
    计算机网络: IP地址,子网掩码,网段表示法,默认网关,DNS服务器详解
    VMWare VMNet 8 的配置使用
    VMware虚拟机CentOS7
    如何禁止虚拟机自动获取DHCP分配的ip地址
    Linux之VMware虚拟机取消DHCP
  • 原文地址:https://www.cnblogs.com/caozx/p/9168966.html
Copyright © 2011-2022 走看看