前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一篇文章教会你使用Java中的super关键字基本用法

一篇文章教会你使用Java中的super关键字基本用法

作者头像
Java进阶者
发布2021-01-22 10:42:09
3730
发布2021-01-22 10:42:09
举报
文章被收录于专栏:Java进阶学习交流

前面的文章给大家介绍了Java诸多基础知识,感兴趣的小伙伴记得前往噢:Java基础入门篇(五)——Java变量类型的转换和运算符Java基础入门篇(四)——Java变量数据类型和基本数据类型Java基础入门篇(三)——Java常量、变量Java基础入门篇(二)——Java注释、关键字和标识符Java基础入门篇(一)——Java虚拟机和运行环境。接下来开始我们今天的内容吧~

一、重写父类方法

1.什么是重写父类方法

在继承关系中,子类会继承父类所定义的方法,当在子类中对继承方法进行一些修改,这就是重写父类方法。也就是说子类包含父类同名方法。

2.重写父类方法遵循“两同两小一大”原则

两同:方法名,参数列表相同。

两小:子类方法返回值类型小于等于父类方法返回值类型;子类方法声明抛出的异常类小于等于父类方法声明抛出的异常类。

一大:子类方法的访问权限大于等于父类方法的访问权限。

3.重写父类方法案例

例如:

代码语言:javascript
复制
//定义Animal类
class Animal{
public String name;//名字属性
public int age;//年龄属性
//动物叫的方法
void shout(){
        System.out.print("动物发出的叫声");
}
}
//定义Cat继承Animal类
class Cat extends Animal{
void shout(){
        System.out.print("喵喵喵~~~~");
}
//显示名字和年龄方法
public void show(){
        System.out.print("我是"+name+","+"今年"+age+"岁");
}
}
public class p20 {
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Cat c=new Cat();//创建Cat类实例对象
    c.name="英国短毛猫";//给Cat类的name属性赋值
    c.age=2;//给Cat类的age属性赋值
    c.show();//调用Cat类的show()方法
    c.shout();//调用Cat类的shout()方法
    }
}

输出的结果是:

代码语言:javascript
复制
我是英国短毛猫,今年2岁喵喵喵~~~~

从上面代码中,Cat类是继承Animal类的shout()方法,当Cat类继承Animal类还没有shout()方法时,调用的Animal的shout()方法并打印“动物发出的叫声”,这时就不能描述具体的动物叫声,Cat类对象表示猫类,发出的叫声是“喵喵喵~~~”。方法的重写就是在Cat子类中定义一个shout()方法对父类的方法进行重写。在调用Cat类对象的shout()方法时,只会调用子类重写的该方法,没有去调用父类的shout()方法。

二、super关键字

1.什么是super关键字

super是当前类的直接父类对象,是对当前对象的直接父类对象的引用。

2.如果当子类重写父类的方法后,子类对象是不能访问父类被重写的方法,可以使用super关键字访问父类的成员

3.super关键字调用父类的成员变量和成员方法格式

代码语言:javascript
复制
super.成员变量
Super.成员方法([参数1,参数2,参数3,....])

4.super关键字的用法案例

例如:

代码语言:javascript
复制
//定义Animal类
class Animal{
    String name="动物";//name属性
    int age=6;//age属性
    void shout(){
    System.out.println("动物发出的叫声");
    }
}
class Dog extends Animal{
    String name="狗";//name属性
    //重写父类的shout方法
    void shout(){
    super.shout();
}
//访问父类成员变量
void show(){
    System.out.println("名字:"+super.name+","+"年龄:"+super.age+"岁!");
    }
}
public class p22 {
public static void main(String[] args) {
    // TODO Auto-generated method stub
    Dog d=new Dog();//创建狗的对象
    d.shout();//调用Dog对象的重写的shout方法
    d.show();//调用Dog对象的show方法
    }
}

输出的结果是:

代码语言:javascript
复制
动物发出的叫声
名字:动物,年龄:6岁!

从上面代码中,首先定义一个Animal类,在Dog类继承Animal类,然后重写了父类的shout()方法,在子类中使用super.shout()调用父类重写的方法,在show()方法访问父类的属性,super关键字是可以访问属性和方法。

三、super关键字调用父类的构造方法

1.super关键字调用父类的构造方法格式

代码语言:javascript
复制
super([参数1,参数2,参数3,...])
代码语言:javascript
复制
2.super关键字调用父类的构造方法案例

例如:

代码语言:javascript
复制
//定义Fruit类
class Fruit{
//定义Fruit类有参数的构造方法
public Fruit(String name,double weight){
        System.out.print("我是一个"+name+","+"重量为:"+weight+"g!");
  }
}
//定义Cherry继承Fruit类
class Cherry extends Fruit{
public Cherry(){
        super("樱桃",66);//调用父类有参数的构造方法
}
}

public class p23 {
public static void main(String[] args) {
        // TODO Auto-generated method stub
        Cherry c=new Cherry();//实例化子类Cherry对象
  }
}

输出的结果是:

代码语言:javascript
复制
我是一个樱桃,重量为:66.0g!

从上面的代码中,首先是定义了一个Fruit类,在Fruit类中定义了有参数的构造方法。定义Cherry继承Fruit类,调用父类有参数的构造方法。在实例化Cherry对象就会调用Cherry类的构造方法,Cherry类的构造方法被调用时父类的构造方法也一样被调用了。super调用父类构造方法的代码要写子类构造方法的第一行,只可以出现一次。

四、 总结

本文主要介绍了重写父类的方法和super关键字。

重写父类方法就是子类包含父类同名方法,遵循两同两小一大”原则。

super关键字是当前类的直接父类对象,是对当前对象的直接父类对象的引用,通过super关键字案例理解这个用法。

此外,本文还介绍了super关键字调用父类的构造的方法,介绍了它的格式和super关键字调用父类的构造方法案例。希望大家通过本文的学习,对你有所帮助!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-12-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java进阶学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、重写父类方法
  • 二、super关键字
  • 三、super关键字调用父类的构造方法
  • 四、 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档