目录
1.多态(Polymorphism)
1.1 分类
特殊多态:一个方法有多个重名的实现(也叫方法重载)。例子:overloading
参数化多态:一个类型名字可以代表多个类型(泛型编程);
子类型多态(包含多态):一个变量名可以代表多个类的实例(子类型)。
1.2使用多态的好处
1. 应用程序不必为每一个派生类编写功能调用,只需要对抽象基类进行处理即可。大大提高程序的可复用性;
2. 派生类的功能可以被基类的方法或引用变量所调用,这叫向后兼容,可以提高可扩充性和可维护性。
2.重载
2.1 概念
方法重载一定要有不同的参数列表;可以有相同或不同的返回类型;可以有相同或不同的public,private,protected;可以有相同或者不同的异常。
2.2 细节解释
1.重载是一种静态多态(static polymorphism),在静态类型检查时判断;
2.可以在同一个类内重载,也可以在子类中重载;
3.只要参数列表不变,就不算重载。
2.3 重载的目的
方法重载的主要好处就是不用为了对不同的参数类型或参数个数,而写多个函数。多个函数用同一个名字,但参数列表,即参数的个数或(和)数据类型可以不同。调用的时候,虽然方法名字相同,但根据参数列表可以自动选择对应的函数。这样我们在调用的时候,就不需要记那么多的方法名称,而是知道了方法的功能就可以直接的给他传递不同的参数,编译器会明确的知道我们调用了哪一个方法。相对于if-else,重载要更优雅,减少了部分if-else的代码。
3.重写
1. 概念:在Java程序中,类的继承关系可以产生一个子类,子类继承父类,它具备了父类所有的特征,继承了父类所有的方法和变量,子类可以定义新的特征,当子类需要修改父类的一些方法进行扩展,增大功能,程序设计者常常把这样的一种操作方法称为重写,也叫称为覆写或覆盖。
2.重写和重载的区别: