JAVA中重载和重写的区别
2015-07-30 13:32
471 查看
本篇记事重载与重写的区别。
重载(overload):
方法的重载是指一个类中可以定义有相同的名字,但是参数不同的多个方法。调用时,会根据不同的参数来选择对应的方法。
重载的两同三不同:
——同一个类,同一个方法名称
——参数列表不同,即参数类型不同,参数个数不同,参数顺序不同。
注意:
只有返回值不同不能构成方法的重载。
只有形参的名称不同,不构成方法的重载。
与普通方法一样,构造方法也可以重载。
例:
class FunctionDemo{
public static void main(String[] args){
add(3,4);
add(3.0,4.0);
add(3,4,5);
}
//加法运算,两个整数的和
public static int add(int a, int b){
return a + b;
}
//加法运算,两个小数的和
public static double add(double a, double b){
return a + b;
}
//加法运算,三个整数的和
public static int add(int a, int b,int c){
return add(a,b) + c;
}
}
重写(override):
在子类中,可以从基类中继承来的方法进行重写。
重写方法必须和被重写方法具有相同的方法名称、参数列表和返回类型。
注意:
重写方法不能使用比被重写方法更严格的访问权限。(由于多态)(个人理解为 public,private,default,protected,不知对错)
个人认为有重写就有继承(extend。)
例:
package com.text2;
class Person {
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public void setAge(int age) {
this.age=age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public String getInfo() {
return "Name: "+ name + "\n" +"age: "+ age;
}
}
class Student extends Person {
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school){
this.school =school;
}
public String getInfo() {
return "Name: "+ getName() + "\n" + "age: " + getAge()
+ "\n" + "school: "+ school;
}
}
public class TestOverWrite {
public static void main(String arg[]){
Student student = new Student();
Person person = new Person();
person.setName("none");
person.setAge(1000);
student.setName("John");
student.setAge(18);
student.setSchool("SCH");
System.out.println(person.getInfo());
System.out.println(student.getInfo());
}
}
两者的区别:
个人理解为:
重写必须有继承,而重载 不需要。
重写的方法名称相同,参数类型兼容和数目相同,而重载只有方法名称相同,参数类型和数目是不一样的。
重写是有权限的,修饰符受基类方法的 限制。而重载和修饰符没有关系。
总结:
重写就是子类的方法覆盖基类的方法,要求方法名和参数类型相同。
重载就是同一个类中两个或两个以上的方法,要求有相同的方法名,而参数类型和数目是不相同的。
重载(overload):
方法的重载是指一个类中可以定义有相同的名字,但是参数不同的多个方法。调用时,会根据不同的参数来选择对应的方法。
重载的两同三不同:
——同一个类,同一个方法名称
——参数列表不同,即参数类型不同,参数个数不同,参数顺序不同。
注意:
只有返回值不同不能构成方法的重载。
只有形参的名称不同,不构成方法的重载。
与普通方法一样,构造方法也可以重载。
例:
class FunctionDemo{
public static void main(String[] args){
add(3,4);
add(3.0,4.0);
add(3,4,5);
}
//加法运算,两个整数的和
public static int add(int a, int b){
return a + b;
}
//加法运算,两个小数的和
public static double add(double a, double b){
return a + b;
}
//加法运算,三个整数的和
public static int add(int a, int b,int c){
return add(a,b) + c;
}
}
重写(override):
在子类中,可以从基类中继承来的方法进行重写。
重写方法必须和被重写方法具有相同的方法名称、参数列表和返回类型。
注意:
重写方法不能使用比被重写方法更严格的访问权限。(由于多态)(个人理解为 public,private,default,protected,不知对错)
个人认为有重写就有继承(extend。)
例:
package com.text2;
class Person {
private String name;
private int age;
public void setName(String name){
this.name=name;
}
public void setAge(int age) {
this.age=age;
}
public String getName(){
return name;
}
public int getAge(){
return age;
}
public String getInfo() {
return "Name: "+ name + "\n" +"age: "+ age;
}
}
class Student extends Person {
private String school;
public String getSchool() {
return school;
}
public void setSchool(String school){
this.school =school;
}
public String getInfo() {
return "Name: "+ getName() + "\n" + "age: " + getAge()
+ "\n" + "school: "+ school;
}
}
public class TestOverWrite {
public static void main(String arg[]){
Student student = new Student();
Person person = new Person();
person.setName("none");
person.setAge(1000);
student.setName("John");
student.setAge(18);
student.setSchool("SCH");
System.out.println(person.getInfo());
System.out.println(student.getInfo());
}
}
两者的区别:
个人理解为:
重写必须有继承,而重载 不需要。
重写的方法名称相同,参数类型兼容和数目相同,而重载只有方法名称相同,参数类型和数目是不一样的。
重写是有权限的,修饰符受基类方法的 限制。而重载和修饰符没有关系。
总结:
重写就是子类的方法覆盖基类的方法,要求方法名和参数类型相同。
重载就是同一个类中两个或两个以上的方法,要求有相同的方法名,而参数类型和数目是不相同的。
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统