首页天道酬勤java面向对象,什么是重载和重写

java面向对象,什么是重载和重写

张世龙 05-05 14:41 124次浏览

重写只存在于子类和父类中,重载存在于一个类中。

具体区别如下。

一、重写(override ) ) )。

override改写了实现不同功能的方法。 通常,子类继承父类时,它用于重写(重新实现)父类中的方法。

改写(覆盖)规则:

1、改写方法的参数列表必须与改写方法完全相同。 否则,就不能说是改写,而是过载。

2、重写方法的访问修饰符必须大于重写方法的访问修饰符(publicprotecteddefaultprivate )。

3、重写方法的返回值必须与重写方法的返回值一致

4、重写方法抛出的异常必须与重写方法抛出的异常一致或为其子类

5、重写的方法不能是私有的。 否则,在那个子类中只是新定义了方法,s没有重写它。

6、静态方法不能重写为非静态方法。 (发生编译错误。

二、overload是一种重载,一般在一个类中实现一些重载的方法,这些方法的名称相同,参数格式不同。

重载规则:

1、使用重载时,只能用相同的方法名称、不同的参数格式实现。 不同的参数类型可以是不同的参数类型、不同的参数数量、不同的参数顺序(参数类型需要不同);

2、访问权限、返回类型、抛出的异常无法重载

3、方法异常类型和数量不影响重载;

多态性的概念很复杂,有多种意义的多态性。 有趣但不严格的意思是,继承是子类使用父类的方法,多态是父类使用子类的方法。

一般来说,使用多态性是为了避免父类出现大量重载,导致代码肥大,难以维护。

继承是子类获得父类成员,重写是继承后重新实现父类的方法。 重载是一个类中一组参数具有不同名称的相同方法。 多态性是在对基类的引用中指向子类的对象。

网络中有趣的是,继承是子类使用父类的方法,多态是父类使用子类的方法。

以下示例包括这四个实现。

//Triangle继承Shape类

类triangle extends shape {

重写Shape类的getSides方法

公共int get sides

返回3;

}

}

//Rectangle继承Shape类

类rectangle extends shape {

重新加载Shape类的getSides方法。 将参数添加到父类的getSide方法中)

publicintgetsides(intI ) {

返回I;

}

}

//父类

公共类形状{

公共布尔is sharp

返回真;

}

公共int get sides

返回0;

}

publicintgetsides(triangletri ) {

返回3;

}

publicintgetsides(rectanglerec ) {

返回4;

}

publicstaticvoidmain (字符串[ ] args ) {

Triangle tri=new Triangle (;

system.out.println (' triangleisatypeofsharp?' tri.isSharp ();

//isShape (是父类的方法,Triangle中不存在,因此tri.isSharp ) )方法继承父类的方法

形状形状=new triangle (;

//new对象为Triangle的Shape实例。 (new对象的理解方式与dog的animal实例相同) ) ) ) )。

//这是父级多态性

system.out.println (' my shape has ' shape.get sides () ) ' sides.' );

}

}

通过比较,可以看出多态性重载的优点。 使用重载时,父类需要重载获取每个子类的边缘数的方法。 如果使用多态性,则父类只提供用于获取边数的接口,对于获取哪个形状的边数、如何获取,在子类中分别实现(改写)

java方法的重载和重写,java接口和抽象类的区别