super and this

如果子类声明了一个与父类的成员变量同名的成员变量,则称父类的成员变量被隐藏(hiding)。

如果子类声明了一个与父类成员方法同名的成员方法,则称父类的该成员方法被重写(overriding)。

关键字this 和 super分别用来指明子类和父类中同名成员变量或成员方法。

当父类的成员变量、子类的成员变量和类方法使用的局部变量三者同名,或其中的两者同名时,可以使用关键字this和super来指定所要使用的变量。

class A{
    int x;    //在类A中声明了成员变量X
}

class B extends A{    //类B继承类A,同时也继承了类A的成员变量X。
    int x;            //在类B中又声明了一个成员变量X

    
    void m(){
       int x;        //方法m中又声明了自己的局部变量x
       super.x=2;    //  super修饰的是其所在类父类即类A的x
       this.x=1;     //  this 修饰的是其所在类即类B的x
       x=100;        //   这里的x是方法m本身的局部变量x
    }
}

super关键字  引用blog  http://www.cnblogs.com/xdp-gacl/p/3635948.html

时间: 2024-12-17 18:25:04

super and this的相关文章

python中super出现的TypeError: must be type, not classobj 原因及解决

执行一下代码,出现错误,TypeError: must be type, not classobj class A():    def __init__(self):        print("Enter A")        print("Leave A") class B(A):    def __init__(self):        print("Enter B")        super(B, self).__init__()  

python中的super

super用于类的继承.用super()代替父类名 (一)通过类名调用父类中的方法                                                         (二)通过super调用父类中的方法(python3) 结果如下: python3中的写法:super().__init__() python2中的写法:super(B,self).__init__()  B子类,不是父类,别写错了.

public static <T extends Comparable<? super T>> void sort (List<T> list)的理解

public static <T extends Comparable<? super T>> void sort (List<T> list)的理解 public static <T extends Comparable<? super T>> void sort (List<T> list) (1)首先:public static void sort(List list) (2)为了安全性加泛型:public static <

Objective-C中的self和super

1.有过面向对象的人知道,self相当于this,super相当于调用父类的方法 2.self是类的隐藏的参数,指向当前调用方法的类,另一个隐藏参数是_cmd,代表当前类方法的selector. super并不是隐藏的参数,它只是一个”编译器指示符”,它和self指向的是相同的消息接受者,也就是说, [self class]=[super class]. 不同的是,super告诉编译器,当调用某个方法时,要去调用父类的方法,而不是本类的. 总之,当使用self调用方法时,会从当前类的方法列表中开

浅谈Java泛型中的extends和super关键字(转)

泛型是在Java 1.5中被加入了,这里不讨论泛型的细节问题,这个在Thinking in Java第四版中讲的非常清楚,这里要讲的是super和extends关键字,以及在使用这两个关键字的时候为什么会不同的限制.    首先,我们定义两个类,A和B,并且假设B继承自A.下面的代码中,定义了几个静态泛型方法,这几个例子随便写的,并不是特别完善,我们主要考量编译失败的问题: public class Generic{ //方法一 public static <T extends A> void

super关键字的用法

package com.frank;//定义包名,必须是第一行.如果没有包名,那么就会被放在一个没有名字的默认包中. import java.util.*; /** 继承 */ public class Sample {     public static void main(String[] args)     {         OldMan o = new OldMan("张三",80);         System.out.println("名字:"+o.

关于Java中this和super的用法介绍和区别

1.this&super 什么是this,this是自身的一个对象,代表对象本身,可以理解为:指向对象本身的一个指针.当你想要引用当前对象的某种东西,比如当前对象的某个方法,或当前对象的某个成员,你便可以利用this来实现这个目的.要注意的是this只能在类中的非静态方法中使用,静态方法和静态的代码块中绝对不能出现this.his也可作为构造函数来使用.在后面可以看到 而什么是super,可以理解为是指向自己超(父)类对象的一个指针,而这个超类指的是离自己最近的一个父类.super的作用同样是可

HDU 1087 Super Jumping! Jumping! Jumping! 简单DP

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1087 题目大意:N个数字组成的一条路,每个数字是一个节点顺序连接,起点在第一个数之前,终点在第N个数之后.现让你选择一条路从起点跳到终点,只能往前且跳到比当前点大的那个点,可以认为终点是最大的,可以从起点直接跳到终点但是路的值就是0了,每条路的值为所经过的数字节点的值的和,问你值最大为多少. 解题思路:决策:在当前点i往i~N哪个点跳,反过来当前点i+1可以从1~i哪个点跳过来,那么a[i+1] >

Java重载、覆写、this、super、抽象类、接口

第一.重载和覆写 1) 重载:方法名相同,参数类型和个数不同,典型的是构造方法的重载  覆写:方法名.参数类型.返回值类型全部相同,典型的是接口的实现: 2)重载对权限没有要求:覆写要求  被覆写的方法不能拥有更严格的权限: 3)重载发生再一个类中:覆写发生在继承类中. 第二.this和super 1)this访问本类中的属性(方法),如果本类中没有此属性(方法),则从父类中 继续寻找:super询问父类中的属性(方法): 2)调用本类构造,必须放在构造方法的首行:调用父类构造,必须放在子类构造

this/super/static/final/匿名对象/继承/抽象类/访问权限修饰符

1.this关键字的作用     1)调用本类中的属性;     2)调用本类中的构造方法;且只能放首行,且必须留一个构造方法作为出口,即不能递归调用     3)表示当前对象; 2.匿名对象     直接new出来的对象,不创建变量名,且只能使用一次,通常作为方法的参数及返回值使用 3.继承     继承是面向对象的三大特征之一,通过关键字:extends实现,被继承的类称为父类(也称作基类/超类),实现继承的类称为子类(也称作派生类).     特点:     (1)通过继承,子类可以直接访