Java面试题二:重载和重写的区别

1、重载:

        在Java中,方法的重载就是在类中创建多个同名的方法,方法中的参数类型和参数的个数不同,多个同名函数同时存在,重载是多态的一种表现。调用方法时,通过传递给他们不同的参数个数和参数类型来决定使用那一个方法,方法的返回值类型可以一样,也可以不一样。java重载是根据参数的类型和数量来进行判断的,跟方法的返回值没有关系。

       特点:在同一个类中, 方法名相同、参数类型和参数个数不同。能够有不同的訪问修饰符;能够抛出不同的异常;

       代码示例如下:

 public class Dog {
        
         void bark()
         {
                System.out.println(\"no barking!\");
                this.bark(\"female\", 3.4);
         }
         void bark(String m,double l)
         {
                System.out.println(\"a barking dog!\");
                this.bark(5, \"China\");
         }
}
         

2、重写(覆盖):

        在Java中,重写是指继承关系子类方法对父类中方法的重写。子类中定义的某个方法与其父类有同样的名称和参数,则该方法被重写。在Java中,子类可以继承父类中的方法,而不需要编写同样的方法。但是有时候子类想对继承的父类中的方法做出改动,于是出现了方法的重写。

       特点:子类中的方法与父类中的方法具有相同的方法名、返回类型和参数类型。子类中重写的方法将覆盖原来父类的方法,且访问修饰符的限制一定要大于被重写方法的訪问修饰符(public>protected>default>private)。

                 返回的类型必须一直与被重写的方法的返回类型同样。重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常。比如:父类的一个方法申明了一个检查异常IOException,在重写这种方法是就不能抛出Exception,仅仅能抛出IOException的子类异常。能够抛出非检查异常。

 

3、总结

    简单说,就是相同的一个方法可以依据输入数据的不同。做出不同的处理,即方法的
    重载——有不同的參数列表(静态多态性)

  而当子类继承自父类的同样方法。输入数据一样。但要做出有别于父类的响应时,你就要覆盖父类方法,

    即在子类中重写该方法——同样參数,不同实现(动态多态性)

猜你喜欢

转载自blog.csdn.net/Sunshineoe/article/details/114604724