一 重载overlording
顾名思义,指的是重复加载。特点是方法名相同,参数列表不同。并且返回值类型、属性修饰符、范围限定等这些都不需要考虑。
为什么要用重载呢?按照我个人的理解说一下。
其实重载的方法和被重载的方法干的都是同样一件事,只不过接收的内容不一样。
举个例子,要从北京去上海,但可以选择坐高铁去,也可以选择飞机去。
这里的从A市到B市,就是方法名,也就是做这件事的目的。
至于乘坐什么样的交通工具,就是参数了,也就是做这件事的方式。
换句话说,都是从北京到上海,看乘客的需求是啥,就去匹配相应的方法。
例如 int max(int num1,int num2); String max(String str1,String str2);double max(double num1,double num2)
如果我们不适用多态,那么这三个方法的方法名必须不一致。如果有十几个这样的方法名的话,势必会让我们很头疼,明明干的事是一样的,只不过参数不同就要起这么多名字,是很不人性的。所以,这时候运用多态,既然大家干的事都一样,那就统一成一个方法名。这样在其他地方调用的时候,就不用头疼哪个方法是用来干啥的了。
所以在程序在运行时,首先要去找方法名。如果该方法名被多个方法定义的话,需要再去匹配各个方法里的参数属性,包括类型和个数。
二 继承
子类可以从父类中继承成员变量和方法
但,父类中的私有成员和私有方法是、父类构造是不可以继承的。
1.使用super关键字调用父类中的构造方法
2.默认会先调用父类的构造,再调用子类构造
3.构造方法不可继承
4.Java类中只能继承一个父类
5.父类的私有属性不能直接继承,必须提供方法
6.继承关系必须是一种is-a的关系,但同时子类中比父类包含了更多的信息
三 重写 Override
重写很容易和重载搞混,所以需要对比着来写。
重写是子类对父类方法进行重新书写,重写后的子类方法和父类方法,方法名、返回值、参数类型、参数个数都必须要保持一致。两者的区别在于方法里面具体的实现内容。
还是举上面北京到上海的例子。
比如父类表示的是,从北京坐高铁直达去上海。
子类重写方法的话,也必须是从北京到上海,而且必须是坐高铁。
所不同的是坐高铁的方式。父类只能直达,那子类就可以中转济南,下车玩几天再出发。
public static void drvie(pattern gaoTie){
从北京直接到达上海;
}
@override
public static void drvie(pattern gaoTie){
从北京到济南;
从济南到上海;
}
这就是两者的不同。
小技巧 在eclipse中编写重写方法时,可以用alt +?来调出override注解,避免出现错误
四 多态
指的是同一个实体,具有多种形态。
多态存在有以下几个条件
1、有继承关系
2、子类重写父类方法
3、父类引用指向子类对象