首页天道酬勤简述重写和重载,java多态

简述重写和重载,java多态

张世龙 05-05 14:44 103次浏览

重载和重写的区别

java中方法的重载和重写都是实现多态的一种方法,区别在于前者实现多态是在编译时,后者实现多态是在运行时。

----重写(覆盖)-----

重写的前提是继承,子类重写父类方法的实现过程,方法重写参数类型、个数、顺序必须完全一致。 的主要作用是,根据子类的需要,可以确定属于子类的特定行为。 这也是java多态性的实现方法之一。

例:首先建立动物班。 这个类有一个move方法

公共类动画{

公共语音移动() {

System.out.println (动物在奔跑);

}

}

我们还会制造猫类,猫类继承动物类,重写move方法

公共类cat扩展动画{

@Override

公共语音移动() {

System.out.println ('猫可以跑也可以走) );

}

}

此子类的move方法的方法名称与父类相同,参数均为空,因此作为子类的猫类的move方法是重写父类的move方法

公共类测试{

publicstaticvoidmain (字符串[ ] args ) {

Animal a=new Animal (;

Animal b=new Cat (;

a.move (; //执行父类animal的move方法

b.move (; 执行//子类cat的move方法

}

}

输出结果:

表示在运行时,jvm执行了用特定对象b重写的move方法

方法改写规则总结

父类的成员方法只能由其子类重写。 继承是改写的前提

参数列表和已重写方法的参数列表必须完全相同

访问权限不能低于父类的重写方法。 父类的方法权限修饰符

对于public,子类方法重写的修饰符权限不能小于public (

受保护)

声明为final的方法不可重写

声明为static的方法不可重写,但可以再次声明

如何构建子类不可重写的父类

无论重写的方法是否抛出异常,重写的方法都可以抛出任何非强制异常。 但是,

重写的方法不能抛出新的强制异常,也不能比重写的方法声明的强制异常更广泛

异常,相反很好

如果子类和父类位于同一包中,则子类可以复盖父类的所有方法。 但是,除非声明如下:

隐私和财务方法

如果子类和父类不在同一包中,则子类只能将父类的声明改写为公共和

保护性的非final方法

返回类型可以与重写方法的返回类型不同,但父类必须是返回值的派生类。 (java5和更早版本的返回类型可以相同,而java7和更高版本可以不同。 )

super关键字

子类重写父类的方法后,必须使用super关键字才能重写原始父类的方法

示例:

公共类动画{

公共语音移动() {

System.out.println (动物在奔跑);

}

}

公共类cat扩展动画{

@Override

公共语音移动() {

super.move (;

System.out.println ('猫可以跑也可以走) );

}

publicstaticvoidmain (字符串[ ] args ) {

Animal a=new Cat (;

a.move (;

}

}

运行后,可以看到调用了在父类中重写之前的方法

重载(Overload )

重载在同一个类中进行,同种中方法名相同,但参数不同的方法是重载方法,返回值类型不一定相同。 每个重载方法都必须满足唯一的参数列表。 这是确定jvm执行哪个方法的关键。

公共类开销{

//返回值因参数而异

公共int test1 () {

返回1;

}

公共语音测试2 (inta ) {

系统. out.println (a;

}

//返回值类型相同,参数顺序不同

公共语音测试3 (inta,String b ) {

system.out.println(ba;

}

公共语音测试4 (stringa,int b ) {

system.out.println(ab;

}

publicstaticvoidmain (字符串[ ] args ) {

板载overload=new overload (;

system.out.println (overload.test1 );

overload.test2(2;

Overload.test3(3,' c ';

Overload.test4('d ',4 );

}

}

执行结果:

重载规则

返回类型不是重载函数的区分标准,重载方法可以更改或不更改返回类型

重载的方法需要修改参数列表。 (参数的数量、类型和顺序至少有一个不同。)。

重新加载的方法可以更改访问修饰符

重载方法可以声明新的或更宽的检查异常

方法重载只发生在同一个类中

不同点

重载

重写

返回类型

可以修改

绝对不能修改

参数列表

必须修改

绝对不能修改

异常

可以修改

可以减少或删除,但不能抛出新的或更宽的异常

访问权限

可以修改

不能变更为更严格的限制,可以降低限制

简述JAVA中重载和重写的区别,java多态