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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 平凡的鱼 中级黑马   /  2015-9-14 16:47  /  1354 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 平凡的鱼 于 2015-9-15 21:24 编辑

想问一下  this和super的区别
还有在子类中能用this访问父类中的成员吗  
求大神指教

12 个回复

倒序浏览
this表示当前对象,也就是当前类对象,super表示当前类的父类。
举例:你定义一个新的类:A,这个A继承了类B,也就是说B是A的父类。那么如果A中 有个方法:aa();B中也有个方法: aa();
那么在A 中用this.aa()调用的就是A中定义的方法,而super.aa()调用的就是A的父类B中定义的方法aa();
回复 使用道具 举报
一个是本类一个是父类
回复 使用道具 举报
this 代表本类对象, 也可以认为是 谁调用我,我就代表谁
super 是子父类继承中的, 当前对象 父类的引用
回复 使用道具 举报
this表示本来对象的引用。  super表示父类对象的引用。
回复 使用道具 举报
学习了,真棒
回复 使用道具 举报
zllqxy 中级黑马 2015-9-18 19:01:33
7#
A:super是一个关键字,代表父类的存储空间标识。(可以理解为父亲对象的引用)                 B:它和this的用法相似                         a:成员变量                                 this.变量        --        本类的                                 super.变量        --        父类的                         b:构造方法                                 this(...)        --        本类的                                 super(...)        --        父类的                         c:成员方法                                 this.方法名()        --        本类的                                         super.方法名()        --        父类的
回复 使用道具 举报
楼上讲的好详细
回复 使用道具 举报




面向对象(this和super的区别和应用)
* A:this和super都代表什么
        * this:代表当前对象的引用,谁来调用我,我就代表谁
        * super:代表当前对象父类的引用
* B:this和super的使用区别
        * a:调用成员变量
                * this.成员变量 调用本类的成员变量,也可以调用父类的成员变量
                * super.成员变量 调用父类的成员变量
        * b:调用构造方法
                * this(...)        调用本类的构造方法               // 8.10                       
                * super(...)        调用父类的构造方法      //8.10
        * c:调用成员方法
                * this.成员方法 调用本类的成员方法,也可以调用父类的方法           //8.18
                * super.成员方法 调用父类的成员方法   //8.12//8.13  



程序都不全   只为展示以上各种调用



8.10


class Son extends Father {
   publicSon() {                 
      this("王五",25);            //本类中的构造方法
      //super("李四",24);             //调用父类中的构造方法
      
      



8.12


class Father {
        public void print() {
                System.out.println("Fu print");
        }
}

class Son extends Father {
        public void method() {
                System.out.println("Zi Method");
        }

        public void print() {
                super.print();                                                        //super可以调用父类的成员方法
                System.out.println("Zi print");
        }
}



8.18



class Animal {
        private String color;                                        //毛的颜色
        private int leg;                                                //腿的个数

        public Animal(){}
        public void eat() {                                                //吃饭
                System.out.println("吃饭");
        }
}

class Cat extends Animal {
        public Cat() {}                                                        //空参构造

        public Cat(String color,int leg) {                //有参构造
                super(color,leg);
        }
{
                this.eat();                                                                            this.成员方法 调用本类的成员方法,当下面的方法加注释时候调用父类的方法               
        }


        /*public void eat() {                                                //吃鱼
                System.out.println("猫吃鱼");
        }*/
  
}








回复 使用道具 举报
解答的不错,我也受教了。
回复 使用道具 举报
1.this是当前类的内部对象,所以和类的外部对象访问类成员变量 和方法的规则一致,语法:this.<变量名>和this.<方法名>。 2.this只能在当前类的内部使用,但是,不能在static修饰的方法 (即类方法)中使用。 3.this在实例方法中通常被省略,除非实例方法中包含与成员变量 同名的局部变量时,访问成员变量需要使用this。 4.当一个类中包含多个构造方法的时,如果其中一个构造方法要调 用另外的构造方法时,使用this关键字。  1.super可以访问被子类重写的父类同名方法和被子类隐藏的父类的 成员变量。 2.可以使用super关键字调用父类的构造方法。 子类访问父类的成员变量用super关键字,用this访问不到。
回复 使用道具 举报
还没学到super
回复 使用道具 举报
刚学完,还是挺好理解的,前面各路大神出没
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马