Java中的this和super关键字

    this和super关键字一直困扰着我,所以总结一下用法。

    this关键字:

    Java中的this关键字只能存在于方法体内。并且其含义是当前类的一个对象,是指向当前类的。

    注意:函数参数或者局部变量和成员变量重名时,成员变量会被屏蔽。此时要访问成员变量要使用“this.成员变量”

的方式,如果没有重名,那么可以直接使用。

    我们可以看下下面的代码和运行结果:

Java中的this和super关键字

    super关键字:

    super关键字可以使子类引用父类的成员,如变量,方法,构造器。

    1)调用父类的构造器:

            其格式为:super(参数列表)。

            直接用super()就能够调用父类的无参构造器,如果想调用父类的有参构造器,就需要在参数列表中填写参数,

        编译器会根据参数名和参数类型来调用相应的父类构造器。

            需要注意的是,如果子类中没有显示是调用父类的无参构造器和有参构造器,则系统会默认调用父类中的无参

        构造器,如果父类中此时没有无参构造器,则会出现编译错误。调用父类的构造器的代码只能在子类构造器中第一

        行。

    2)调用父类的方法和属性:

            当用super关键字引用父类的属性和方法时,使用下面的格式:

                引用属性:super.属性。

                引用方法:super.方法([arg_list])

            需要注意的是:此时父类中的方法和属性的修饰词必须是public或protected,只有这两个权限在可使子类访问父类。

     我们可以看下下面的代码和运行结果:

       Java中的this和super关键字

        

Java中的this和super关键字

Java中的this和super关键字

    创建的对象为无参时的结果:

Java中的this和super关键字

    创建的对象为有参时的结果:

Java中的this和super关键字

    这里要注意的是:子类继承的属性是父类属性最初的值。

    总结来说就是this指向本类!super指向父类!