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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© helloxiaoyu 中级黑马   /  2015-8-6 23:44  /  322 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

super 和 this 的区别,完整一些

3 个回复

倒序浏览
super和this只能在类内部使用,super代表父类,this代表本类
回复 使用道具 举报
class Person
{
        String name;
        Person(String n)
        {
                this.name=n;
        }
}
class Student extends Person
{
        //String name;//注意,如果打上这句话,那么运行结果是null;
        //因为下面那句super(b);其实就是this.name=b。而这个name是父类的name。
        //只不过是子类拿来用了。所以“zhangsan”实际上是赋给了super的那个
        //name了。你再打印this.name,当然会显示为空。
        //测试如下。当下面改成super.name时。会打印zhangsan。
        Student(String b)
        {
                super(b);
        }
        public void speak()
        {
                System.out.println(this.name);//这个name,其实是父类的name,你
                //如果自己再定义一个name,那么就变成本类自己的name了。
                //而super(b)这句话已经把zhangsan赋值给了super的name,所以打印
                //结果为null。
        }
}
回复 使用道具 举报
谢谢各位的解答
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马