黑马程序员技术交流社区

标题: this和super关键字 [打印本页]

作者: 杨雯雯    时间: 2012-12-23 18:49
标题: this和super关键字
在一个子类中,可不可以既用this调用父类方法,又用super调用父类方法,如果不可以,那又是为什么?
作者: Kevin123    时间: 2012-12-23 19:12
子类继承父类后,父类变量就是自己的,无论用this,或是用super都能实现想要的目的。
附:
super()与this()的区别
This():当前类的对象,super父类对象。

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

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

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

希望能帮到楼主
作者: 张占忠    时间: 2012-12-23 22:53
this  和 super 如果在继承中,子类函数中,调用父类函数。是没有问题的。一样,没有区别!
一个简单的例子!
class Sad1 extends Sum_2 {
     public void ds(){
              super.as();
             this.as();
     }
}
class Sum_2{
          public void as(){}
}

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


作者: 何创    时间: 2012-12-24 10:23
可以的,不过要看在什么位置什么情况下。
比如
class fu
{
   public void functiondemo(){}
// 在fu类中使用 自己的方法时候可以使用this 来调用。
}
class son extends fu
{
   super.functiondemo();
//在子类中如果调用父类的functiondemo时候可以使用super关键字
//同样 在子类中使用 自己的方法时候可以使用this 来调用,也是可以的。
}

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

希望可以帮助到你




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2