三、
java中的重载(overload)
1、相同方法名,不同参数表。
2、方法重载时,对于参数的匹配有个向上就近原则。(这样可以节省栈空间资源);
3、为什么面向对象中要有方法重载?
方法的重载使同一类方法由于参数造成的差异对于对象的使用者是透明的。对象的使用者只负责把参数交给对象,而具体怎么实现由对象内部决定。
4、java中的运算符重载
java中唯一重载的运算符是string类型的“+”号,任何类型+string类型结果都为stirng类型。
5、注意点:重载不仅出现在同一个类中,也可以出现在父子类中。
java中的重写(override)
1、
参数表、方法名必须完全相同,访问修饰符要求子类宽于父类。返回值类型在jdk5.0以前要求完全相同,
5.0以后可以父类返回一个对象a,子类返回一个该对象a的子类也是覆盖。子类方法覆盖父类方法时要求子类方法的访问修饰符宽于或等于父类的访问修饰符。
2、
为什么面向对象中要有方法覆盖?
覆盖允许子类用自己特色的方法去替换调父类已有的方法。
3、
父类中的私有方法与子类中任何方法不够成覆盖关系,
也就是说只有父类被子类继承过来的方法,才有可能与子类自己的方法构成覆盖关系。
4、少覆盖原则:如果子类覆盖了父类过多的方法,那么我们要重
新思考一下这两个类之间到底是不是继承关系。
注:子类的属性和父类的属性同名时叫遮盖(区覆盖)
属性的遮盖是没有多态的。
重写是说当子类继承了父类。子类中有一个和父类一样的方法,就说子类重写了父类的方法
重载,是对类。有方法的重载,也有构造函数的重载。
重载是:
当多个方法具有相同的名字而含有不同的参数时产生
那么对参数不同的调用,实际调用不同的方法
也可以理解为实际上有两个方法,名字同,参数不同!
重写:也就是覆盖!
覆盖不能降低原方法的"可见度"(相对与父类)
重载(overload),方法名称必须相同,参数(包括参数个数,顺序,类型)必须不同,返回值类型可以不同。
重写(overload),方法名称必须相同,参数(包括参数个数,顺序,类型)也要相同。返回值类型必须相同。
重写是覆盖? 那是覆盖父类的方法。
重载,是一个方法,有多种参数的格式