动力节点首页 全国咨询热线:400-8080-105

绑定手机号,登录
手机号

验证码

微信登录
手机号登录
手机号

验证码

微信登录与注册
微信扫码登录与注册

扫码关注微信公众号完成登录与注册
手机号登录
首页 > 文章

super关键字用法解析

05-13 17:25 728浏览
举报 T字号
  • 大字
  • 中字
  • 小字

我们都知道Java语言有继承的特性,被继承的类称为超类或父类,继承的类称为子类。super关键字是一个指代变量,用于在子类中指代父类对象。

但是,知道归知道,至于如何使用super关键字我们则是一头雾水,特别是对应Java零基础的小伙伴来说,更是不得其意。下面我们就来分析一下super关键字的用法,希望能够给大家带来帮助。

1.访问父类中的方法

第一步:定义father类

public class Father {
    private String father_a;
    public Father() {
        father_a="父亲:曹操";
        System.out.println("我是,"+father_a);
    }
    void dosomething(){
        System.out.println("曹操:挟天子以令诸侯");
    }
}

第二步:定义son类

public class Son extends Father {
    private  String son_a;
    public Son() {
        super();
        son_a="儿子:曹冲";
        System.out.println("我是,"+son_a);
    }
    @Override
    void dosomething() {
       //访问父类中的方法
        super.dosomething();
    }
}

第三步:测试一下

public class Test {
    public static void main(String[] args) {
        Son son=new Son();
        son.dosomething();
    }
}
//output:
//我是,父亲:曹操
//我是,儿子:曹冲
//曹操:挟天子以令诸侯

我们会发现调用了super.dosomething();就会执行父类的dosomething方法。

2.重写父类变量

我们还拿上面的例子来说明一下:

第一步:定义父类

public class Father {
    protected String father_a="我是父亲曹操的变量";
    void dosomething(){
        System.out.println("曹操:挟天子以令诸侯");
    }
}

第二步:定义子类

public class Son extends Father {
    private  String son_a="我是儿子曹冲的变量";
    @Override
    void dosomething() {
        //super.father_a可以调用父类的变量(public和protected)
        System.out.println(super.father_a);
        System.out.println(son_a);
    }
}

第三步:测试一下

public class Test {
    public static void main(String[] args) {
        Son son=new Son();
        son.dosomething();
    }
}
//output
//我是父亲曹操的变量
//我是儿子曹冲的变量

3.子类构造方法调用

第一步:定义父类

public class Father {
    protected String father_a="我是父亲曹操的变量";
    //无参构造器
    public Father() {
        System.out.println("无参构造器:"+father_a);
    }
    //有参构造器
    public Father(String father_a) {
        this.father_a = father_a;
        System.out.println("有参构造器:"+father_a);
    }
}

第二步:定义子类

public class Son extends Father {
    public Son() {
        //在子类中调用父类构造器
        //第一种:super(执行父类中的无参构造器,默认可以不写)
        //super();
        //第二种:执行父类中的有参构造器,参数写到super中就可以了
        super("子类传给父类的");
       System.out.println("子类的构造方法");
    }
}

第三步:测试

public class Test {
    public static void main(String[] args) {
        Son son=new Son();
    }
}
//output
//有参构造器:子类传给父类的
//子类的构造方法

从上面我们可以看到,其实是有两种情况

第一种:直接调用super()会执行父类的无参构造方法,可以默认不写。

第二种:使用super(“父类参数”),调用父类有参构造方法,把参数传递进来就好。

这两种情况还是比较简单的,不过还有几种比较特殊的情况需要我们去注意,我们可以在动力节点在线观看老师讲解的视频课程找到相应的章节学习。

0人推荐
共同学习,写下你的评论
0条评论
代码小兵124
程序员代码小兵124

99篇文章贡献336699字

相关课程 更多>

作者相关文章更多>

推荐相关文章更多>

Java面试题及答案整理

提枪策马乘胜追击04-21 20:01

Spring常见面试题

代码小兵92504-17 16:07

Java零基础实战项目——五子棋

代码小兵98804-25 13:57

Java string类详解

杨晶珍05-11 14:54

6道经典算法面试题

杨晶珍05-12 16:39

发评论

举报

0/150

取消