您的位置:首页 > 编程语言 > Java开发

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());

  }

  }

两者的区别:

个人理解为:

重写必须有继承,而重载 不需要。

重写的方法名称相同,参数类型兼容和数目相同,而重载只有方法名称相同,参数类型和数目是不一样的。

重写是有权限的,修饰符受基类方法的 限制。而重载和修饰符没有关系。

总结:
重写就是子类的方法覆盖基类的方法,要求方法名和参数类型相同。
重载就是同一个类中两个或两个以上的方法,要求有相同的方法名,而参数类型和数目是不相同的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息