this和super关键字的区别(Java)

一、Java当中this和super的区别:
1.属性的区别:
     (1)this访问本类中的属性,如果本类没有这个属性则访问父类中的属性。
     (2)super访问父类中的属性。 
2.方法的区别:
     (1)this访问本类中的方法,如果本类没有这个方法则访问父类中的方法。
     (2)super访问父类中的方法。 
3.构造的区别:
     (1)this调用本类构造构造,必须放在构造方法的首行。
     (2)super调用父类构造,必须放在子类构造方法首行。 
     (3)其他区别:this表示当前对象。super不能表示当前对象 

二、this. 变量和super.变量
     (1)this.变量:调用的当前对象的变量; 
     (2)super.变量:直接调用的是父类中的变量。 

三、this(参数)和super(参数)方法 
     (1)this(参数):调用(转发)的是当前类中的构造器; 
     (2)super(参数):用于确认要使用父类中的哪一个构造器。
 
四、注意点: 
     (1)在对拥有父类的子类进行初始化时,父类的构造方法也会执行,且优先于子类的构造函数执行;因为每一个子类的构造函数中的第一行都有一条默认的隐式语句super(); 
     (2)this() 和super()都只能写在构造函数的第一行; 
     (3)this() 和super() 不能存在于同一个构造函数中。
            1)this()和super()都必须写在构造函数的第一行;
            2)this()语句调用的是当前类的另一个构造函数而这个另一个构造函数中必然有一个父类的构造器,再使用super()又调用一次父类的构造器, 就相当于调用了两次父类的构造器,编译器不会通过; 
     (4)this和super不能用于static修饰的变量,方法,代码块;因为this和super都是指的是对象(实例)。

猜你喜欢

转载自blog.csdn.net/weixin_42449711/article/details/81148524