zoukankan      html  css  js  c++  java
  • this和super

    1.this

    * 每个类的每个非静态方法(没有被static修饰)都会隐含一个this引用名称,它指向调用这个方法的对象。
    * 当在方法中使用本类的属性时,都会隐含地使用this名称,当然也可以明确指定。
    * this可以看作是一个变量,它的值就是当前对象的引用
    * this.属性/方法   表示调用当前属性或方法

    例:

    //Person类的构造方法
    public Person(String name, boolean sex, int age){
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    2.this+构造方法

    * 如果某个构造方法的第一条语句具有形式this(...),那么这个构造方法将调用本类中的其他构造方法。
    * this(xxxx);   构造函数的调用, 注意点:this(xxx) 必须是第一行

    例:

    //Person类的构造方法1
    public Person(String name, boolean sex, int age){
        this.name = name;
        this.sex = sex;
        this.age = age;
    }
        
    //构造方法2-调用构造方法1
    public Person(){
        this("张三","男",18);
    }

    3.super

    * super代表父类的对象
    * super只能在类的内部使用
    * super可以跳过一层继承调用,即调用父类的父类
    * 在Java类中使用super来引用父类的成分
    * super可用于访问父类中定义的属性
    * super可用于调用父类中定义的成员方法
    * super可用于在子类构造器中调用父类的构造器

    **super只能应用在成员方法和构造方法中,不能应用在静态方法中(和this是一样的),如果在构造方法中使用必须放在第一行**

    例:

    >Father类
    
    public Father(String fatField){
        this.fatField = fatField;
    }
    
    eat(){}
    
    >son类
    
    private String sonField;
    public Son(String field){
        //super();  //默认调用空参的父类构造函数
        super(field);  //调用父类的带参数的构造函数
        this.sonField = field;
    }
    
    eat(){
        super.eat(); //调用父类的成员方法,不需要放在第一行
        其他方法
    }

    4.注意

    ##为什么子类会自动调用父类的构造函数???
    原因:子类的所有构造函数中的第一行,其实都有一条隐身的语句super();
    解释:
    super()表示父类的构造函数并会调用于参数相对应的父类中的构造函数。子类中,它在调用父类中空参数的构造函数。因为子类继承父类,会继承到父类中的数据,所以必须要看父类是如何对自己的数据进行初始化的。所以子类在进行对象初始化时,先调用父类的构造函数,这就是子类的实例化过程。
    特注:
    1、子类中所有的构造函数都会默认访问父类中的空参数的构造函数,因为每一个子类构造内第一行都有默认的语句super();
    2、若父类中没有空参数的构造函数,那么子类的构造函数内,必须通过super语句指定要访问的父类中的构造函数;
    3、若子类构造函数中用this来指定调用子类自己的构造函数,那么被调用的构造函数也一样会访问父类中的构造函数。

    5.this和super关键字对比

  • 相关阅读:
    Tomcat环境的搭建(web基础学习笔记一)
    子查询二(在HAVING子句中使用子查询)
    子查询一(WHERE中的子查询)
    分组统计查询(学习笔记)
    Oracle体系结构一(学习笔记)
    表分区(学习笔记)
    索引(学习笔记)
    序列(学习笔记)
    触发器七(复合触发器)(学习笔记)
    触发器六(系统触发器)(学习笔记)
  • 原文地址:https://www.cnblogs.com/anni-qianqian/p/5189240.html
Copyright © 2011-2022 走看看