java基础知识 | 方法重载

103 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第17天,点击查看活动详情

方法重载

如果有两个方法方法名相同,但是参数列表不一致,就可以说一个方法是另一个方法的重载。方法重载的要求如下:

  • 方法名相同
  • 方法的参数类型、个数、顺序只要有一项不同
  • 方法的返回类型可以不同、也可以相同
  • 方法的修饰符可以不同

举个栗子:

//定义了3个print方法,他们只是有传参的区别,所有属于方法重载
public class Father{
    public void print(){
    System.out.println("无参数打印方法");
    }
      public void print(int x,String y){
    System.out.println("整型在前参数方法");
    }
      public void print(String y,int x){
    System.out.println("字符串类型在前的有参数方法");
    }
}

注:如果传参的参数名不是和之前的方法参数名一样将会报错且不属于方法重载

多态

在面向对象中有一条原则:父类出现的地方,子类一定可以出现。但是反过来说则不一定。而多态,就是这个原则的一个具体表现形式。比如:当一个父类有很多个子类的时候,这些子类在调用同一个方法的时候表现出了不同的行为,这种现象即为多态。

  • 注:多态屏蔽了父类的方法。如果需要调用父类的某一方法,则需要使用super关键字来调用父类的某一方法。如果父类的某个方法不被继承,则可以在该方法面前加上final关键字。

  • 代码示例:

//定义父类--动物
public calss Animal{
    public void cry(){
      System.out.println("动物会叫");
    }
    public void eatFood(){
      System.out.println("动物会吃");
    }
    public final void func(){
      System.out.println("动物:调用func()方法");
    }
}


//定义子类猫和狗
public class cat extends Animal{
    public void cry(){
         System.out.println("猫会喵喵叫");
    }
    public void eatFood(){
      System.out.println("猫会吃鱼");
    }
    public class dog extends Animal{
    public void cry(){
         System.out.println("狗会汪汪叫");
    }
    public void eatFood(){
      System.out.println("狗会吃shi");
    }
}

两个子类都重载了动物类的cry()和eatFood()方法,但在各类调用cry方法后都出现了不同的叫声····