重载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();
}
}
显示结果:
我是父类!!!
我是子类中的方法!!!
我是子类中的方法!!!
分享到:
相关推荐
重载,重写,覆盖,多态的深刻剖析,具体分析了重载,重写,覆盖,多态之间的区别
主要总结了java中的重载和重写的区别,供大家理解参考,有问题可以补充
重写:是指重写基类的方法,在基类中的方法必须有修饰符virtual,而在子类的方法中必须指明override。重载:用于在给定了参数列表和一组候选函数成员的情况下,选择一个最佳函数成员来实施调用。多态:c#的多态性...
重载与覆写/重写的区别 区别 重载 覆写 1 单词 OverLoading Override 2 概念 方法名称相同,参数的类型或个数不同 方法名称相同,参数的类型或个数相 同,返回值类型相同 3 范围 发生在一个类之中...
重载与重写的区别,详细描述了java中重载与重写的区别。
c++重载,重写,重定义测试代码
对Java中方法的重载和重写的具体描述,有利于区分方法的重载和重写
Java中重载和重写总结,基础知识,概念分清楚,补充基础知识
C++中重载与重写函数区别及虚函数!
对java中重载和重写的概念做了详细的介绍和比较
这篇文章主要介绍了C++中重载、重写(覆盖)和隐藏的区别,是C++面向对象程序设计非常重要的概念,需要的朋友可以参考下
java 重载,重写以及继承,多态的区别
1、重载 方法的重载是同一个类中多态性的一种表现。 方法重载须遵循如下两条规则 (1)方法名相同。 (2)参数列表不同。 注意:方法的返回值类型不能用来区分重载的方法。这是因为当调用一个方法时...
本文主要介绍Java 的重载和重写,学习java的同学都知道Java的多态有多重要,这里给大家举例说明函数的重载和重写,希望能帮助有需要的小伙伴
重载、重写、继承、封装、基本案例掩饰
[Java]重载,重写以及继承,多态的区
重载和重写--java
详细描述继承,多态的概念和应用,阐述重载和重写的区别
C++中的重载丶重写丶重定义丶重定向的区别.docx 你懂得
笔记