首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > VSTS >

满载VS重写

2012-12-28 
重载VS重写重载VS重写一、什么是重载?重载是一种静态地多态机制,通过相同的方法名来实现不同的方法。重点:1)

重载VS重写
重载VS重写

一、什么是重载?
重载是一种静态地多态机制,通过相同的方法名来实现不同的方法。

重点:
1)那么是如何达到相同的方法名实现不同的方法的呢?——根据方法体的实参和型参来决定相应的方法。
2)构造方法和普通方法都可以重载,但是构造方法没有返回类型。
3)私有的重载方法不能被生成的对象直接调用

实例分析:

package TextExtends;/** * 学生类 * @author Sean 2012 - 8 */public class Student {/** * 重载方法 * @param number */public void print(String number){System.out.println("学号:"+number);}/** * 重载方法一 * @param number * @param name */ void print(String number,String name){System.out.println("学号:"+number+"  姓名:"+name);}/** * 重载方法二 * @param number * @param name * @param age */ void print(String number,String name,int age){System.out.println("学号:"+number+"  姓名:"+name+"  年龄:"+age);}/** * 重载方法三 * @param number * @param name * @param age * @param score */ void print(String number,String name,int age,double score){System.out.println("学号:"+number+"  姓名:"+name+"  年龄:"+age+"  分数:"+score);}}

package TextExtends;/** * 主程序类 * @author Sean 2012 - 8 */public class Master {/** * 主程序入口 * @param args */public static void main(String[] args) {/** * 创建三个学生信息 */Student student1 = new Student();Student student2 = new Student();Student student3 = new Student();Student student4 = new Student();/** * 显示学生信息 */student1.print("000001");student2.print("000002", "李四");student3.print("000003","王五",17);student4.print("000003","赵六",18,89.78);}}


在代码中Student类中重载了四个print方法,在主程序中调用方法时,会根据调用时使用的参数来决定调用相应的方法。

结果显示:

学号:000001
学号:000002  姓名:李四
学号:000003  姓名:王五  年龄:17
学号:000003  姓名:赵六  年龄:18  分数:89.78

二、什么是重写?
重写就是重写创建父类的方法;因此重写的前提是拥有继续关系。

重点:
1)在父类中已有的方法可以在子类中重写(重新创建);如果想要使用子类重写的方法,可以采用子类定义子类(子类 对象名 = new 子类();)或父类定义子类(父类 对象名 = new 子类();)
2)父类中私有方法是不能被重写的。

实例分析:
package TextRewrite;/** * 学生类 * @author Sean 2012 - 8 */public class Student {/** * 定义了一个方法 */ void print(){System.out.println("我是父类!!!");}}

package TextRewrite;/** * 大学生类 * @author Sean 2012-8 */public class CollegeStudent extends Student{/** * 重写父类中的print方法 */public void print(){System.out.println("我是子类中的方法!!!");}}

package TextRewrite;/** * 主程序类 * @author Sean 2012 - 8 */public class Master {/** * 主程序入口 * @param args */public static void main(String[] args) {/** * 创建三个学生信息 */Student student1 = new Student();Student student2 = new CollegeStudent();CollegeStudent student3 = new CollegeStudent();/** * 调用对象中的print方法 */student1.print();student2.print();student3.print();}}


显示结果:
我是父类!!!
我是子类中的方法!!!
我是子类中的方法!!!

1 楼 wangtu123 2012-09-11   引用3)私有方法不能被重载。

这个不对吧 2 楼 sean2012 2012-09-14   哦!Sorry!是我弄错啦!谢谢提供宝贵评论,改一下:“私有方法能被重载,而私有的重载方法不能被生成的对象直接调用!”

热点排行