首页 > 编程知识 正文

python this关键字,this关键字和super关键字的区别

时间:2023-05-04 11:16:03 阅读:195857 作者:1764

一、this关键字的意义

1、代表当前对象

2、this就是所在函数所属对象的引用,简单来说,哪个对象调用了this所在的函数,this就代表哪个对象

3、如下图,this代表的就是对象p,如右边内存图解,this会通过堆内存中新建对象的首地址,指向新建的对象

  二、this关键字的应用(一个类中除静态外的成员,如果要运行,就必须得被对象调用

1、当成员变量和局部变量重名,可以用关键字this区分,如:

class Person{private String name;private int age;Person(String name){//成员变量和局部变量重名,可以用关键字this区分this.name = name;}public void speak(){ //输出时,会默认为成员增加this关键字,用来代表具体对象的数据System.out.println(this.name+":"+this.age);}}

2、this关键字也可以用于在构造函数中调用其他构造函数。但是,只能定义在构造函数的第一行,因为初始化动作要先执行。如:

class Person{private String name;private int age;Person(){name = "眯眯眼的煎蛋";age = 1;System.out.println("Person run");}Person(String name){//成员变量和局部变量重名,可以用关键字this区分this.name = name;}Person(String name,int age){//调用其他构造函数时,只能定义在构造函数的第一行,因为初始化动作要先执行this();this.name = name;this.age = age;}public void speak(){System.out.println(this.name+":"+this.age);}}class ThisDemo {public static void main(String[] args) {Person p = new Person("atgdjm",10);p.speak();}}

运行结果

我们可以看到,虽然我们在 Person(String name,int age) 构造函数中调用了 Person() 构造函数,但是最后的输出结果,仅输出了 Person run ,成员变量的内容还是我们在新建对象时,传递进去的参数,并不是 Person() 中初始化的内容。

可能有人会说,我们将调用的构造函数放在后面执行,不就行了,那么我们就来看看,如果将调用的构造函数放在后面,会出现什么结果:

我们可以看到,编译时就会提示错误,因为其他初始化要先执行,否则会破坏函数中的其他语句,如上面的例子,可能会覆盖我们需要传进去的参数,而且我们定义的函数是封装起来的。这也是Java中的语法规则。 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。