java中super关键字的作用

1.super关键字可以在子类的构造方法中显示地调用父类的构造方法,super()必须为子类构造函数中的第一行。

2.super可以用来访问父类的成员方法或变量,当子类成员变量或方法与父类有相同的名字时也会覆盖父类的成员变量或方法,这个时候要想访问父类的成员变量或方法只能通过super关键字来访问,子类方法中的super.方法名()不需要位于第一行。

 

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();
    }
}

 

转载于:https://www.cnblogs.com/bluetree2/p/10784962.html

  • 6
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值