方法语法结构:
[修饰符列表] 返回值类型 方法名(参数列表){
方法体;
}
例:
public static void main(String[] args){
System.out.println("HelloWorld");
}
注:修饰符列表不是必须的。
方法的重载/Overload
方法重载又被称为:overload。如果多个方法的功能相似,则可以考虑使用方法重载。
在同一个类中,方法名相同,参数列表不同(参数数量不同、参数顺序不同、参数类型不同),则构成方法重载。
方法重载与方法的返回值无关。
例:
public class OverloadTest{
//以下两个方法构成重载
public static void m1(){}
public static void m1(int a){}
//以下两个方法构成重载
public static void m2(int a,double b){}
public static void m2(double a,int b){}
//以下两个方法构成重载
public static void m3(int x){}
public static void m3(double x){}
//以下两个方法不构成重载,而是方法重复
//public static void m4(int x,int y){}
//public static void m4(int y,int y){}
//以下两个方法不构成重载
/*public static void m5(int x){}
public static int m5(int x){
return 1;
}*/
}
方法的覆盖/Override
方法覆盖又被称为方法重写。当父类中的方法已经无法满足当前子类的需要,子类有必要将父类中继承过来的方法重新编写,这个重新编写的过程称为方法的重写/覆盖。
构成方法重写的条件为:
方法重写发生在具有父子关系的父子类之间,重写的方法返回值类型相同,方法名相同,型参列表相同;
方法重写的时候,访问权限不能更低,可以更高。如:父类中方法为public,则子类中重写的方法不能为private;父类中方法为protected,则子类中重写的方法可以为public;
方法重写的时候,抛出的异常不能更多,只能更少。
例:
public class Animal{
public void move(){
System.out.println("动物在移动");
}
}
public class Cat extends Animal(){
public void move(){
System.out.println("猫在爬树。");
}
}
public class Bird extends Animal(){
public void move(){
System.out.println("鸟儿在飞翔。");
}
}
注意:
私有方法不能继承,所以不能覆盖;构造方法不能继承,所以不能覆盖;静态方法不存在覆盖。
覆盖只针对方法,不针对属性。