`
sean2012
  • 浏览: 44694 次
  • 性别: Icon_minigender_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();
	}
}


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

分享到:
评论
2 楼 sean2012 2012-09-14  
哦!Sorry!是我弄错啦!谢谢提供宝贵评论,改一下:“私有方法能被重载,而私有的重载方法不能被生成的对象直接调用!”
1 楼 wangtu123 2012-09-11  
引用
3)私有方法不能被重载。


这个不对吧

相关推荐

Global site tag (gtag.js) - Google Analytics