Java中this和super的区别

this是自身的一个对象,代表对象本身

this:当前对象
        this.属性;当前对象的属性
        this([参数]);当前对象构造函数
            必须写在构造函数内的首行
            this.函数名([参数]);当前对象的函数

·           形参和成员名重名,用this来区分
super:父类对象

super可以理解为是指向自己超(父)类对象,这个超类指的是离自己最近的一个父类。也大致分为3中中用法

1、普通的直接引用,与this类似,只不过它是父类对象,可以通过它调用父类成员。

2、子类中的成员变量或方法与父类中的成员变量或方法同名,可以使用super区分。

3、引用构造方法,super(参数):调用父类中的某一个构造方法(应该为构造方法中的第一条语句)

 super.属性;父类的属性
 super([参数]);父类的构造函数
每一个构造函数内都默认有一个无参的super();

 

                                                                     个人总结

1、super()和this()类似,区别是,super()从子类中调用父类的构造方法,this()在同一类内调用其它构造方法。

2、super()和this()均需放在构造方法内首行。

3、尽管可以用this调用一个构造器,但却不能调用两个。

4、this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过。

5、从本质上讲,this是一个指向本对象的指针, 然而super是一个Java关键字。

 


版权声明:本文为m0_61209344原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。