面向对象—重写(override)

子父类中成员函数的特点
特殊情况
子父类中定义了一模一样的函数
运行的结果是:子类的函数在运行。
这种情况在子父类中,是函数的另一个特性:override(重写,覆盖,复写)

重写什么时候用?
举例:
/描述手机。
class Phone
{
//来电显示
void show()
{
System.out.println(“电话号码”);
}
}
Phone p=new Phone();
p.show();

随着电话的升级,希望显示姓名,大头贴。
修改源码,虽然费劲但是可以解决问题,不利于后期的维护和扩展。
为了扩展方便,新功能是不是新的电话具备的呢?
单独描述单独封装。新电话也是新电话中的一种。继承-直接获取父类的功能。
但是新电话的来显功能已经变化了,需要重新定义。
那么定义一个新功能合适吗?比如newShow,不合适,因为父类已经将来显功能定义完了,
子类完全不需要定义新功能,直接用就可以了,如果子类的来显功能内容不同。
只需要保留来显功能,定义子类的内容即可,这就是重写的应用。

class NewPhone extends Phone
{
void show()
{
super.show();//如果还需要父类中原有的部分功能,可以通过super调用。
System.out.println(“姓名”);
System.out.println(“大头贴”);
}
}

重写(覆盖)的注意事项

1,子类覆盖父类,必须保证权限大于或等于父类的权限。

2,静态覆盖静态

写法上必须一模一样:
函数的返回值类型,函数名,参数列表都要一样。

class Fu
{
    void show()
    {
        System.out.println("fu show run");
    }
}
class Zi extends Fu 
{
    void show()
    {
        System.out.println("zi show run");
    }
}
class ExtendsDemo2
{
    public static void main(String[] args)
    {
        Zi z=new Zi();
        z.show();
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值