子父类中成员函数的特点。
特殊情况:
子父类中定义了一模一样的函数
运行的结果是:子类的函数在运行。
这种情况在子父类中,是函数的另一个特性: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();
}
}