java中super关键字的作用
1.super关键字可以在子类的构造方法中显示地调用父类的构造方法,super()必须为子类构造函数中的第一行。
2.super可以用来访问父类的成员方法或变量,当子类成员变量或方法与父类有相同的名字时也会覆盖父类的成员变量或方法,这个时候要想访问父类的成员变量或方法只能通过super关键字来访问,子类方法中的super.方法名()不需要位于第一行。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | package test; class FatherClass { public int value; public void f() { value= 100 ; System.out.println( "父类的value属性值=" +value); } public FatherClass(){ System.out.println( "FatherClass constructor" ); } } class ChildClass extends FatherClass { /** * 子类除了继承父类所具有的value属性外,自己又另外声明了一个value属性, * 也就是说,此时的子类拥有两个value属性。 */ public ChildClass(){ super (); System.out.println( "ChildClass constructor" ); } public int value; /** * 在子类ChildClass里面重写了从父类继承下来的f()方法里面的实现,即重写了f()方法的方法体。 */ public void f() { //使用super作为父类对象的引用对象来调用父类对象里面的f()方法 //这个value是子类自己定义的那个value,不是从父类继承下来的那个value value= 200 ; super .f(); //父类的value属性值=100 System.out.println( "子类的value属性值=" +value); //子类的value属性值=200 //打印出来的是子类自定义的那个value的值,这个值是200 System.out.println(value); //200 /** * 打印出来的是父类里面的value值,由于子类在重写从父类继承下来的f()方法时, * 第一句话“super.f();”是让父类对象的引用对象调用父类对象的f()方法, * 即相当于是这个父类对象自己调用f()方法去改变自己的value属性的值,由0变了100。 * 所以这里打印出来的value值是100。 */ System.out.println( super .value); //100 } } public class SuperKeyTest { public static void main(String[] args) { ChildClass cc = new ChildClass(); cc.f(); } } |
未经授权,不得转载!
posted on 2019-04-28 16:52 BlueTree2 阅读(7024) 评论(0) 编辑 收藏 举报
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步