面向对象(子父类中函数的特点-覆盖)

来源:互联网 发布:民航网络信息安全 编辑:程序博客网 时间:2024/06/06 01:48
/*
子父类中的函数.

当子类出现和父类一模一样的函数时,
当子类对象调用该函数,会运行子类函数的内容。
如同父类的函数被覆盖一样。

这种情况是函数的另一个特性:重写(覆盖)。
区分函数的另一个特点:重载(同名不同参)

当子类继承父类。沿袭了父类的功能到子类中,
但是子类虽具备该功能,但是功能的内容却和父类不一致,
这时,没有必要定义新功能,而是使用覆盖特点,保留父类的功能定义,并重写功能内容。

覆盖:
1、子类覆盖父类,必须保证子类权限大于等于父类权限,否则编译失败。
2、静态只能覆盖静态。静态不能覆盖非静态。

记住:
重载:只看同名函数的参数列表
重写(覆盖):子父类方法要一模一样,包括返回类型。

*/

class Fu
{
    void show1()
    {
        System.out.println("fu show");
        //return 1;//多一句子函数也不是覆盖。
    }
    void speak()
    {
        System.out.println("vb");
    }
}
class Zi extends Fu
{
    //void speak2()
    void speak()//子类函数名与父类函数名一样:覆盖:有利于功能扩展。
    {
        System.out.println("java");
    }
    void show()
    {
        System.out.println("zi show");
    }
}


class ExtendsDemo3
{
    public static void main(String[] args)
    {
        Zi z=new Zi();
        //z.show1();//输出fu show        
        //z.show2();//输出zi show
        z.show();//输出zi show
        z.speak();//覆盖,子类内容覆盖父类内容。
    }
}


//来电显示。但是后期要升级。
class Tel
{
    void show()
    {
        System.out.println("number");
    }
    void lingsheng()
    {}
}
//升级后,继承新手机,还覆盖
class NewTel extends Tel
{
    void show()
    {
        //System.out.println("number");
        super.show();//调用父类的show函数
        System.out.println("name");
        System.out.println("picture");
    }
}
0 0