ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

重写父类方法及super限定

2021-04-12 13:03:14  阅读:117  来源: 互联网

标签:fly super Ostrich 子类 父类 重写 public


重写父类方法

子类扩展了父类,子类是一个特殊的父类。有些时候我们在扩展一个类的子类时,子类的方法与父类不尽相同,比如鸟类中不是所有的鸟都能飞翔,比如鸵鸟,这种情况下,鸵鸟子类继承父类鸟时,需要重写父类中飞翔的方法。比如下面的例子。

public class Bird
{
    private String Birdname;
    public void setBirdname( String name)
    {
        this.Birdname = name;
    }
    public String getBirdname()
    {
        return this.Birdname;
    }
    public String fly()
    {
        return "i can fly.";
    }
}
public class Ostrich extends Bird
{
    public String fly()
    {
        return "i can`t fly,but i an run.";
    }
    public static void main(String[] args)
    {
        Ostrich one = new Ostrich();
        one.setBirdname("Ostrich");
        System.out.println("i am a " + one.getBirdname() + " " + one.fly());
    }
}

运行以上程序会显示
i am a Ostrich i can`t fly,but i an run.
在例子中,子类Ostrich重写了父类的fly方法。在类方法的复写中,需要遵循“两同两小一大”原则:
两同

  • 方法名相同,形参列表相同。

两小

  • 子类返回值类型小于等于父类返回值,父类中被重写的方法的返回值类型为void,则子类重写方法中的返回值类型只能为void。父类中被重写的返回值类型为A类,则子类重写方法的返回值类型可以是A类或者A类的子类。父类被重写的方法的返回值类型是基本数据类型,则子类重写方法的返回值类型必须是相同的基本数据类型。
  • 子类方法中声明抛出的异常比父类方法声明抛出的异常更小或者相等。

一大

  • 子类方法的访问权限应该比父类中的方法的访问权限更大或者相等,子类中不能重写父类中声明为private权限的方法。定义了private以后只能在本类中使用,子类不能重写。

super限定

将上面第二个程序修改为:

public class Ostrich extends Bird
{
    public String fly()
    {
        return "i can`t fly,but i an run.";
    }
    public String basefly()
    {
        return super.fly();
    }
    public static void main(String[] args)
    {
        Ostrich one = new Ostrich();
        one.setBirdname("Ostrich");
        System.out.println("i am a " + one.getBirdname() + " " + one.basefly());
    }
}

或者为:

public class Ostrich extends Bird
{
    public String fly()
    {
        return "i can`t fly,but i an run.";
    }
    public static void main(String[] args)
    {
        Ostrich one = new Ostrich();
        one.setBirdname("Ostrich");
        System.out.println("i am a " + one.getBirdname() + " " + new Bird().fly());
    }
}

都将输出:i am a Ostrich i can fly.

  • 子类调用父类方法时可用super.方法名来应用被重写的父类方法。

标签:fly,super,Ostrich,子类,父类,重写,public
来源: https://blog.csdn.net/vederem/article/details/115617676

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有