java多态编程定义求和类

利用多态编程,定义求和类,类中包含有分别实现求两个数,三个数和四个数的和的方法,定义测试类,分别输出以上三种情况的结果

多态存在的三个必要条件
一、要有继承;
二、要有重写;
三、父类引用指向子类对象。
多态引用类型有两种方式:
a. 编译时多态:方法的重载;
b. 运行时多态:方法的重写;
方法重写:
在重写方法时,需要遵循以下的规则:
(一) 父类方法的参数列表必须完全与被子类重写的方法的参数列表相同,否则不能称其为重写而是重载。
(二) 父类的返回类型必须与被子类重写的方法返回类型相同,否则不能称其为重写而是重载。
(三) Java中规定,被子类重写的方法不能拥有比父类方法更加严格的访问权限。
(四) 由于父类的访问权限修饰符的限制一定要大于被子类重写方法的访问权限修饰符,而private权限最小。所以如果某一个方法在父类中的访问权限是private,那么就不能在子类中对其进行重写。
在继承过程中如果父类当中的方法抛出异常,那么在子类中重写父类的该方法时,也要抛出异常,而且抛出的异常不能多于父类中抛出的异常(可以等于父类中抛出的异常)。
方法重载:
方法重载是指在一个类中,多个方法的方法名相同,但是参数列表不同。参数列表不同指的是参数个数、参数类型或者参数的顺序不同。
方法重载规则:
1)被重载的方法必须改变参数列表;
2)被重载的方法可以改变返回类型;
3)被重载的方法可以改变访问修饰符;
4)被重载的方法可以声明新的或更广的检查异常;
5)方法能够在同一个类中或者在一个子类中被重载。
根据题目可知该多态为编译时多态即方法的重载。
代码实现:

public class Calculation {
    /**
     * 两个数相加
     *
     * @param num1 num1
     * @param num2 num2
     * @return sum
     */
    public double sum(double num1, double num2) {
        return num1 + num2;
    }

    /**
     * 三个数相加
     *
     * @param num1 num1
     * @param num2 num2
     * @param num3 num3
     * @return sum
     */
    public double sum(double num1, double num2, double num3) {
        return num1 + num2 + num3;
    }

    /**
     * 四个数相加
     *
     * @param num1 num1
     * @param num2 num2
     * @param num3 num3
     * @param num4 num4
     * @return sum
     */
    public double sum(double num1, double num2, double num3, double num4) {
        return num1 + num2 + num3 + num4;
    }
}

测试类:

public class TestMain {
    public static void main(String[] args) {
        Calculation calculation = new Calculation();
        double two = calculation.sum(4, 5);
        System.out.println("两个数之和: " + two);

        double three = calculation.sum(4, 5, 6);
        System.out.println("三个数之和: " + three);

        double four = calculation.sum(4, 5, 6, 9);
        System.out.println("四个数之和: " + four);
    }
}

运行结果:

img