zoukankan      html  css  js  c++  java
  • This关键字和Super关键字

    This关键字

    Java提供了一个this关键字,this关键字总是指向调用该方法的对象。根据this出现位置的不同,

    this作为对象的默认引用有两种情形:

    1.构造器中引用该构造器正在初始化的对象;
    2.在方法中引用调用该方法的对象。

    this关键字最大的作用就是让类中一个方法,访问该类里的另一个方法或Field。

    this可以代表任何对象,当this出现在某个方法体中,它所代表的对象是不确定的,但它的类型是确定的,

    它所代表的对象只能是当前类;只有当这个方法被调用时,它所代表的对象才被确定下来:

    谁在调用这个方法,this就代表谁。

     

    注意是:对于static修饰的的方法而言,则可以使用类来直接调用该方法,如果在static修饰的方法中使用this关 键字,则这个关键字就无法至向合适的对象。所以,static修饰的方法中不能使用this引用由于static修饰的方法 不能使用this引用,使用static修饰的方法不能访问不使用static修饰的普通成员,因此,java语法规定:静态成员 不能直接访问非静态成员。


    Super关键字

    super是java提供的一个关键字,super用于限定该对象调用它父类继承得到的Field或方法。
    如果在构造器中使用super,则super用于限定该构造器初始化的是对象从父类继承得到的Field,

    而不是该类自己定义的Field

    super调用父类被覆盖的实例方法

    如果需要在子类中调用父类被覆盖的实例方法,则可以使用super限定来调用父类被覆盖的实例方法。
    静态方法中不能使用super关键字。【static】

    super调用父类与子类重名的Field 
    如果子类定义了与父类同名的Field,则会发生子类Field隐藏父类Field的情形。正常情况下,子类里定义的 方法 直接访问该Field默认会访问到子类中定义的Field,无法访问到父类中被隐藏的Field。在子类定义的实例方 法可 以通过super来访问父类中被隐藏的Field。

    调用父类构造器

    使用super关键字调用父类的构造器
    子类继承父类不会获得父类的构造器,但子类构造器里可以通过super关键字访问到父类的构造器。


    this关键字和super关键字的区别

    super关键字调用的是其父类的构造器,而this调用的是同一个类中重载的构造器。因此:使用super定义父类构造器也必须出现在子类构造器执行的第一行,所以this调用和super调用不会同时出现

  • 相关阅读:
    HDU 1874 畅通工程续(dijkstra)
    HDU 2112 HDU Today (map函数,dijkstra最短路径)
    HDU 2680 Choose the best route(dijkstra)
    HDU 2066 一个人的旅行(最短路径,dijkstra)
    关于测评机,编译器,我有些话想说
    测评机的优化问题 时间控制
    CF Round410 D. Mike and distribution
    数字三角形2 (取模)
    CF Round410 C. Mike and gcd problem
    CF Round 423 D. High Load 星图(最优最简构建)
  • 原文地址:https://www.cnblogs.com/t0404/p/10291107.html
Copyright © 2011-2022 走看看