本帖最后由 廖力 于 2012-11-23 01:36 编辑
重载overload是在同一个类中的两个或两个以上的方法,拥有相同的方法名,但是参数却不相同(类型或者数量),方法体也不相同
最常见的就是构造方法了
1在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数,不同的参数顺序(当然,同一方法内的几个参数类型必须不一样)
2不能通过访问权限、返回类型、抛出的异常进行重载;- public class MainClass {
- public static void main(String[] args) {
- Person p1 = new Person();
- p1.setName("张三");
- Person p2 = new Person("李四");
- Person p3 = new Person("王五",23);
- fetchWater(p1);
- fetchWater(p2, p3);
- fetchWater(p1, p2, p3);
- }
- //一般方法重载
- public static void fetchWater(Person p) {
- System.out.println(p.getName() + ",一个人挑水喝");
- }
- public static void fetchWater(Person p1, Person p2) {
- System.out.println(p1.getName() + "和" + p2.getName() + ",两个人担水喝");
- }
- public static void fetchWater(Person p1, Person p2, Person p3) {
- System.out.println(p1.getName() + "、" + p2.getName() + "和"
- + p3.getName() + ",三个人没水喝");
- }
- }
- class Person {
- private String name;
- private int age;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- //构造方法重载
- public Person() {
- }
- public Person(String name) {
- this.name = name;
- }
- public Person(String name, int age) {
- this.name = name;
- this.age = age;
- }
- }
复制代码 运行结果:
张三,一个人挑水喝
李四和王五,两个人担水喝
张三、李四和王五,三个人没水喝
重写override是子类重写的是父类的方法,只有在发生继承关系的前提下,在能出现重写方法
1重写方法的参数列表必须完全与被重写的方法的相同
2重写方法的访问修饰符一定要大于被重写方法的访问修饰符(public>protected>default>private)。- public class MainClass {
- public static void main(String[] args) {
- Person p = new Person("张三", 18);
- System.out.println("重写后的toString:"+p.toString());
- System.out.println("没重写的toString:"+p.superToString());
- }
- }
- class Person {
- private String name;
- private int age;
- public Person(String name, int age) {
- this.name = name;
- this.age = age;
- }
- // 重载Object的toString
- public String toString() {
- return "姓名:" + name + "年龄:" + age;
- }
- // 调用Object的toString
- public String superToString() {
- return super.toString();
- }
- }
复制代码 运行结果
重写后的toString:姓名:张三年龄:18
没重写的toString:com.heima.Lland.Person@41a80e5a
|