A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

5黑马币
有点混,特别是在继承中的时候,求详细解答!谢谢小伙伴们!

36 个回复

倒序浏览
this表示的是当前对象的引用,哪个对象调用了this所在的函数,this就代表哪个对象;super表示的是当前类的父类。this 有两种用法:1.成员变量和局部变量重名时,可以用this来区分。 2.this可以用在构造函数中,调用其它构造函数(只能定义在构造函数的第一行,因为初始化时必须被先执行)。super可以直接调用父类的属性、方法、构造方法。但在调用构造方法时,两者不能同时使用,因为只要是调用构造方法,就必须放在构造方法的首行。

点评

补充一点,this返回的本身对象引用有时候也可以作为方法参数使用。  发表于 2015-11-8 22:57
赞,补充一点,super的用法和this基本相同,只是代表的对象不同  发表于 2015-11-5 10:25
回复 使用道具 举报
package com.itheima;

public class Test8 {
       
        /**
         * 第8题:在打印语句中如何打印这3个x变量?
         * @author Administrator
         * */
        /**
         * class A {
                        int x = 1;
                        class B {
                                int x = 2;
                                void func() {
                                        int x = 3;
                                        System.out.println( ? );
                            }
                    }
                }
         * */
        public static void main(String[] args){
                //创建外部类A的对象a
                A a=new A();
               
                //创建对象a中内部类B的对象b
                A.B b= a.new B();
               
                //调用b的func()方法
                b.func();
        }
}

class A {
        int x = 1;
        class B {
                int x = 2;
                void func() {
                        int x = 3;
                        //第一个x为A的成员变量,即A.this。x
                        //第二个x为B的成员变量,即A.B.this。x 或者  this.x
                        //第三个x为当前x变量值,即x
                        System.out.println("A.x="+A.this.x+"-----"+"A.B.x="+A.B.this.x+"-----"+"this.x="+this.x+"-----"+"x="+x);
            }
    }
}
一道面试题,希望能帮住到你。
回复 使用道具 举报
this关键字代表当前对象。在类文件方法中可以使用分区是成员变量还是局部变量。还可以使用在构造方法中调用其它的构造方法(例子:this(arguments)其中arguments根据参数个数添加)。super代表当前对象的父对象,可以用来在构造函数用引用父类构造器(例子:super(arguments)其中arguments根据参数个数添加)。也可以在普通方法区分父类变量、子类变量、局部变量。
回复 使用道具 举报
this代表本身,super代表父类,,super(..):执行父类构造函数  
回复 使用道具 举报
this主要是在本类中寻找成员(成员变量、方法),{在构造方法中,先看本类中有无对应参数类型相同的方法,没有就去父类中寻找}。super特指是在父类中寻找方法。
回复 使用道具 举报
this代表本类对象的引用 super代表父类对象的引用
回复 使用道具 举报
this是一个关键字。代表当前类对象的引用。
                简单记:在方法中,哪个对象调用方法,this就代表谁。
                除了静态方法外,所有的方法中有隐含的有一个this引用
        应用场景:
                解决局部变量隐藏成员变量问题。
his:局部变量把成员变量隐藏/需要用到当前类对象的时候
        super:子类想要调用父类中与自己重名的成员时
回复 使用道具 举报
this是指当前方法所在的对象引用,一般用于在类的成员方法中调用自身的成员变量或者成员方法;
super则与this类似,super指的是该父对象的引用,多用于在子类中调用父类中的成员变量或者方法;
回复 使用道具 举报
在继承中,我是这么理解的,打个比方说,有一对父和子,子继承(extends)父的一切东西,但不包括父亲私有(private)的东西,如果this在子中修饰一辆车,儿子想开车载女友兜风,那么先看看自己有没有车,有车就用自己的车,没车就用父的车.super是子直接引用的父的东西,比如说父的司机,直接拿过来用.(如有雷同,纯属巧合)希望对你有帮助
回复 使用道具 举报
this是指当前方法所在的对象引用,一般用于在类的成员方法中调用自身的成员变量或者成员方法;
super则与this类似,super指的是该父对象的引用,多用于在子类中调用父类中的成员变量或者方法;
回复 使用道具 举报
253186803 发表于 2015-11-4 23:02
this是指当前方法所在的对象引用,一般用于在类的成员方法中调用自身的成员变量或者成员方法;
super则与th ...

super也可以用来调用父类中的构造函数吧!父类中私有的成员变量子类访问不了、
回复 使用道具 举报
Pinfan 发表于 2015-11-4 01:04
this表示的是当前对象的引用,哪个对象调用了this所在的函数,this就代表哪个对象;super表示的是当前类的 ...

恩恩,很详细,感谢啊!
回复 使用道具 举报
特立独行 发表于 2015-11-4 22:54
在继承中,我是这么理解的,打个比方说,有一对父和子,子继承(extends)父的一切东西,但不包括父亲私有(private ...

恩恩,现在理解很多了,感谢热心帮忙的小伙伴们!
回复 使用道具 举报
478883662 发表于 2015-11-4 09:11
package com.itheima;

public class Test8 {

恩恩,我研究研究、
回复 使用道具 举报
this关键字是指调用这个方法的对象的引用,而super是指父类的引用,
public void show(int a ){
        this.a=a;//就是谁调用这个对象,this就代表谁,
        super.a=a;//就是将这个a变量的值赋给父类的变量a
}
回复 使用道具 举报
this关键字是指调用这个方法的对象的引用,而super是指父类的引用,
public void show(int a ){
         this.a=a;//就是谁调用这个对象,this就代表谁,
        super.a=a;//就是将这个a变量的值赋给父类的变量a
}
回复 使用道具 举报
this是一个关键字。代表当前类对象的引用。
在方法中,哪个对象调用方法,this就代表谁。
除了静态方法外,所有的方法中有隐含的有一个this引用。

super是调用父类的构造函数
使用super调用有一些限制条件,不能在super调用中使用实例变量作为参数.
而且在构造函数中,调用必须写在继承类的构造函数定义的第一行,不能在构造函数的后面使用.
this调用的同类的构造函数.
super的限制条件同样适用于this函数
一个构造函数定义中不能同时包括this调用和super调用,如果想同时包括的话,可以在this中首先进行super调用.
回复 使用道具 举报
this是调用方法的对象的引用,谁调用本方法,this就带表谁,而super是父类引用
回复 使用道具 举报
this调用本类成员变量
super使用父类的构造方法
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马