重载VS重写

[size=large][align=center]重载VS重写[/align][/size]

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

重点:
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();
}
}


显示结果:
我是父类!!!
我是子类中的方法!!!
我是子类中的方法!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值