Java零基础-方法的重载与覆盖

方法语法结构:

[修饰符列表] 返回值类型 方法名(参数列表){

方法体;

}

例:

1 public static void main(String[] args){
2     System.out.println("HelloWorld");
3 }

注:修饰符列表不是必须的。

方法的重载/Overload

方法重载又被称为:overload。如果多个方法的功能相似,则可以考虑使用方法重载。

在同一个类中,方法名相同,参数列表不同(参数数量不同、参数顺序不同、参数类型不同),则构成方法重载。

方法重载与方法的返回值无关。

例:

 1 public class OverloadTest{
 2     //以下两个方法构成重载
 3     public static void m1(){}
 4     public static void m1(int a){}
 5 
 6     //以下两个方法构成重载
 7     public static void m2(int a,double b){}
 8     public static void m2(double a,int b){}
 9 
10     //以下两个方法构成重载
11     public static void m3(int x){}
12     public static void m3(double x){}
13 
14     //以下两个方法不构成重载,而是方法重复
15     //public static void m4(int x,int y){}
16     //public static void m4(int y,int y){}
17 
18     //以下两个方法不构成重载
19     /*public static void m5(int x){}
20     public static int m5(int x){
21         return 1;
22     }*/
23 }

方法的覆盖/Override

方法覆盖又被称为方法重写。当父类中的方法已经无法满足当前子类的需要,子类有必要将父类中继承过来的方法重新编写,这个重新编写的过程称为方法的重写/覆盖。

构成方法重写的条件为:

方法重写发生在具有父子关系的父子类之间,重写的方法返回值类型相同,方法名相同,型参列表相同;

方法重写的时候,访问权限不能更低,可以更高。如:父类中方法为public,则子类中重写的方法不能为private;父类中方法为protected,则子类中重写的方法可以为public;

方法重写的时候,抛出的异常不能更多,只能更少。

例:

1 public class Animal{
2    public void move(){
3          System.out.println("动物在移动");
4     }
5 }
1 public class Cat extends Animal(){
2     public void move(){
3         System.out.println("猫在爬树。");
4     }
5 }
1 public class Bird extends Animal(){
2     public void move(){
3         System.out.println("鸟儿在飞翔。");
4     }
5 }

注意:

私有方法不能继承,所以不能覆盖;构造方法不能继承,所以不能覆盖;静态方法不存在覆盖。

覆盖只针对方法,不针对属性。

posted on 2021-02-22 21:50  AnYeYiYang  阅读(99)  评论(0编辑  收藏  举报

导航