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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 杨雯雯 中级黑马   /  2012-12-23 18:49  /  1725 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在一个子类中,可不可以既用this调用父类方法,又用super调用父类方法,如果不可以,那又是为什么?

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

3 个回复

倒序浏览
子类继承父类后,父类变量就是自己的,无论用this,或是用super都能实现想要的目的。
附:
super()与this()的区别
This():当前类的对象,super父类对象。

Super():在子类访问父类的成员和行为,必须受类继承规则的约束

而this他代表当前对象,当然所有的资源都可以访问.

在构造函数中,如果第一行没有写super(),编译器会自动插入.但是如果父类没有不带参数的构造函数,或这个函数被私有化了(用private修饰).此时你必须加入对父类的实例化构造.而this就没有这个要求,因为它本身就进行实例化的构造.
而在方法中super和this使用的方法就差不多了.只不过super 要考虑是否能访问其父类的资源.

希望能帮到楼主

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
this  和 super 如果在继承中,子类函数中,调用父类函数。是没有问题的。一样,没有区别!
一个简单的例子!
class Sad1 extends Sum_2 {
     public void ds(){
              super.as();
             this.as();
     }
}
class Sum_2{
          public void as(){}
}

但是, this,可以访问本类的函数,而super只能访问父类的函数!
只要,父类和子类没有同时用到构造函数!调用父类方法时,没有太大的区别。
但是建议,本类,尽量用this  调用父类时用super。养成好习惯,方便,以后,编写与阅读!

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
可以的,不过要看在什么位置什么情况下。
比如
class fu
{
   public void functiondemo(){}
// 在fu类中使用 自己的方法时候可以使用this 来调用。
}
class son extends fu
{
   super.functiondemo();
//在子类中如果调用父类的functiondemo时候可以使用super关键字
//同样 在子类中使用 自己的方法时候可以使用this 来调用,也是可以的。
}

如果楼主想在父类中同时使用super 和this 那是不行的

希望可以帮助到你

评分

参与人数 1技术分 +1 收起 理由
奋斗的青春 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马