java中super关键字详解

  • super是用于子类对象访问父类内容时的关键字

示例代码:

//先创建两个类,父类和子类。
//父类中有有参构造方法和无参构造方法。
 class Father {
       String name;
       String age;
       int id = 1001;
       public Father(String name, String age) {
           this.name = name;
           this.age = age;
       }
       public Father() {
       }
       public void fatherMethod(){
           System.out.println("父类方法被调用");
       }
      
///
 class Son extends Father{
        int grade;
        int id = 1002;
        public Son() {
    }
        public void methodSon1(){
        System.out.println(super.id);
        System.out.println(id);
    }
     public void son(){
            super.fatherMethod();
    }
}
1.super用来访问父类的构造方法

首先明确一点,在构建子类对象的时候,会默认使用super关键字创建一个父类对象,而这个操作是使用super();语句完成的,如果父类中只有有参构造方法,那么原来默认存在的无参构造方法被有参构造方法覆盖,创建子类对象时就会报错。也就是说如果想创建子类继承父类,那么父类必须存在无参构造方法。

当我们在idea中使用自动生成子类对象的无参构造方法时,会得到下面的代码块:

//自动生成的无参构造方法
        public Son(){
            super();
        }

以上代码表示在创建子类对象中,默认调用了父类的无参构造方法创建了父类对象。而如果我们想在创建子类对象的时候直接调用父类的有参构造方法该如何操作呢?只需要通过如下代码:

 public Son(String name,String age){
            super(name,age);
        }

需要注意的是,在子类的构造方法中,this语句和super语句同时出现是不合逻辑的,因为使用this关键字默认调用了子类的构造方法,而这个构造方法已经包含了父类的构造方法,而再次调用super就不合法了,此时系统会报错。

2.super用来调用父类的成员属性

可以通过*super.父类成员变量名;*的方式直接调用父类的属性值,如果有子类与父类的同名属性,那么此方式会调出父类的属性值。

例如:在文章开头的父类和子类中,分别定义了父类的成员属性id=001;以及子类的成员属性id=002;
通过创建子类对象并调用子类方法*methodSon1()调用得到的结果如下图所示:
在这里插入图片描述

3.super用来调用父类的成员方法

1.在新建子类对象中,可以直接通过对象名.父类方法名;调用父类的成员方法。
2.在子类的方法体中,通过super.父类方法名;调用父类的成员方法.
例如在文章开头代码中调用子类的son方法,运行的结果如下图:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挟飞仙遨游

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值