java特性之多态

57 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第5天,点击查看活动详情

前言

对于Java的三大特性,封装,继承和多态。我们已经说了其中的两个封装和继承。所以在这篇文章中我会讲讲我对java多态的理解以及一些应用。

理解

即使继承和多态是在同一套体系之中的,应该说继承是多态的前置条件。如果没有继承的话,那你多态就没有意义甚至是错误的。举一个具体的实例就是student类已经继承person类,就像下面这样

class student extends person
{
    int name;
    int no;
}

你可以这样使用

person person =new student();

或者这样使用

student student = (student) new person();

这两个对应着多态中的向下转型和向上转型。除此之外多态还体现在方法的重载和重写,重载就是在同一个类上写一个方法对应的不同参数。就比如下面这样。

public int sum(int n1, int n2){//和下面 sum 构成重载
return n1 + n2;
}
public int sum(int n1, int n2, int n3){
return n1 + n2 + n3;
}

这就要求重载的方法只有参数的类型和参数数量不一样,你说如果成员方法名称不一样算不算吗,你可以想一想是他们还是同一个方法?重载我不知道官方怎么定义的,但是在我的理解中是同一个方法为了接受不一样的参数。至于重写吗则像下面这两个类一样都是具有同一个方法,重写对于一个方法而言有着更严格的要求,不仅仅是成员方法名称一样而且返回类型和参数列表也是要一样的。

class B { //父类
public void say() {
System.out.println("B say() 方法被调用...");
}
}
class A extends B {//子类
public void say() {
System.out.println("A say() 方法被调用...");
}
}

按我的理解重写是与父类的方法,所以与父类息息相关。

总结

总而言之,多态在java中十分重要,向下转型和向上转型准备在今日做足资料之后再去撰写。