对于重载到底读chongzai还是zhongzai呢?当然是各有各的读法.
读 重(chong)载:函数被重复多次载入,表现多态性;
读 重(zhong)载:相对于c语言中的函数被过多的载入,也符合overload 的直译;所以还是看大家的习惯了,毕竟这只是一种称呼,重要的还是理解其用法.
昨天晚上一个学弟问我重写对返回值有限制么,那我为什么重写tostring()返回void也行?然后我习惯性的反映是不行啊,因为重写返回类型中子类的类型要比父类约束更高啊!哈哈,想到是什么原因没有!!
我们先来看一下tostring()这个方法:
java里,所有的类,不管是java库里面的类,或者是你自己创建的类,全部是从object这个类继承的。object里有一个方法就是toString(),那么其实所有的类创造的时候,都有一个toString的方法。
这个方法是干什么的?
首先我们得了解,java输出用的函数print();是不接受对象直接输出的,只接受字符串或者数字之类的输出。那么你想把一个创建好的对象拿来输出怎么办?当print检测到输出的是一个对象而不是字符或者数字时,那么它会去调用这个对象类里面的toString 方法。
即使你没有创建,因为是所有的类都是集成object类,所以自然也继承了这个方法。所以默认情况下,你输出一个对象,会调用这个对象继承的toString方法,而Object 类的 toString 方法即(public String toString())返回一个字符串,该字符串由类名(对象是该类的一个实例)、at 标记符“@”和此对象哈希码的无符号十六进制表示组成。换句话说,该方法返回一个字符串,它的值等于:
getClass().getName() + ‘@’ + Integer.toHexString(hashCode())
然而学弟写的呢public void toString(int xx,String xx),也就是重载和重写没有很好的区分开来.
重载:多个同名函数同时存在,具有不同的参数个数/类型。对返回值没有特别的要求.
重写:若子类中的方法与父类中的某一方法具有相同的方法名、返回类型(子类函数的访问修饰权限不能少于父类的)和参数表,则新方法将覆盖原有的方法。
这下对重载和重写又有了更深得理解了,*_*!