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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© qetu001212 中级黑马   /  2016-7-24 19:32  /  740 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

this代表的是对象,是地址值
super代表的是父类对象的引用,不是对象

3 个回复

倒序浏览
没明白,super不是地址值吗
回复 使用道具 举报
this表示当前对象,也就是当前类对象,super表示当前类的父类。  举例:你定义一个新的类:A,这个A继承了类B,也就是说B是A的父类。那么如果A中 有个方法:aa();B中也有个方法: aa();  那么在A 中用this.aa()调用的就是A中定义的方法,而super.aa()调用的就是A的父类B中定义的方法aa();
回复 使用道具 举报
15114111253 发表于 2016-7-24 20:22
this表示当前对象,也就是当前类对象,super表示当前类的父类。  举例:你定义一个新的类:A,这个A继承了类 ...

不不不,没这么简单
class ThisAndSuper {
        public static void main(String[] args) {
                A a = new B();
        }
}
class A {
        int i = 0;
        public A(){
                this.play();
                System.out.println(i);
        }
        public void play(){
                System.out.println("我是A");
        }
}
class B extends A {
        int i = 10;
        public B(){
                this.play();
                System.out.println(i);
        }
        public void play(){
                System.out.println("我是B");
        }
}
class ThisAndSuper2 {
        public static void main(String[] args) {
                B b = new C();
        }
}
class A {
        int i = 0;
        public A(){
        }
        public void play(){
                System.out.println("我是A");
        }
}
class B extends A {
        int i = 10;
        public B(){
                super.play();
                System.out.println(i);
        }
        public void play(){
                System.out.println("我是B");
        }
}
class C extends B {
        int i = 20;
        public C(){
                super.play();
                System.out.println(i);
        }
        public void play(){
                System.out.println("我是C");
        }
}
你可以试试
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马