this和super

来源:互联网 发布:淘宝封店支付宝还能用 编辑:程序博客网 时间:2024/06/05 16:28

在接触了一年多java后我才真正的理解this和super,理解这两个关键字其实就是要搞懂下面问题。
首先,他们出现的意义是什么?
1.this到底指的是谁?
2.this有哪些用法?
3.super指的是谁?
4.super有哪些用法?
我总结了一个定义:this,super在最先包含于哪个类中(跟谁更亲),他就是指就是哪个对象。

public class OutClass {    private String name;    private String age;    private class Child extends Parent {        public Child(String name){            //这个super是指继承Parent类的只有一个String参数的构造方法            super(name);            //这个this是代指Child对象            this.pl();        }        public void pl(){            //这个super是指继承Parent类的对象的kk方法           super.kk();        }    }    public void m(){        System.out.println("outclass的m方法");    }    public OutClass(String age) {        this.age = age;    }    public OutClass(String name, String age) {        //this(name)这种用法是指调用当前类的只有一个String参数的构造方法        this(name);        this.age = age;    }    public void thisBelongOutClass(){        //this.这种用法是指调用当前对象的m方法,this指代OutClass对象        this.m();    }}

父类Parent

public class Parent {    private String name;    public Parent(String name) {        this.name = name;    }    public void kk(){        System.out.println("我是父类的kk方法");    }}

答案:
1.意义:假如set方法和构造方法不用this,那么你的成员变量和方法参数变量就需要保持不同,一旦不同你的代码就会显得奇怪,难懂。其二,假如你想写一个包含父类字段并且比父类字段多的构造方法,你不用super()怎么搞?

总结来说:this和super有两种用法,一种是this.和super.表示对方法的调用,另外一个就是this(),super()表示对构造方法的调用

原创粉丝点击