一方法重载
1、什么是方法重载
方法重载就是在一个类中可以定义多个方法名形同但是方法参数个数、类型、顺序至少有一个不一样。
2、什么情况下可以利用方法重载
重载的好处就是:我们可以很根据实际情况灵活地调用重载方法。
1、构造方法的重载
public class Student{
String name;
int age;
public Student(String name,int age){
this.name=name;
this.age=age;
}
public Student(String name){
this.name=name;
}
public Student(int age){
this.age=age;
}
public Student(){
}
}
以上代码重载了几个构造方法,我们可以根据参数的不同而灵活的调用构造方法来创建对象
public static void main(){
Studet s1 =new Student();
Studet s2 =new Student("张三",18);
Studet s3 =new Student("李四");
Studet s4 =new Student(20);
}
注意
s1.name是NULL s1.age是0
s2.name是张三 s2.age是18
s3.name是李四 s3.age是0
s4.name是NULL s4.age是20
如果重载了构造方法那么默认的构造方法就失效了。
2、普通方法的重载
public void eat(int count,String food){
System.out.println("eat"+cout+food);
}
public void eat(String food){
System.out.println("eat"+food);
}
public void eat(){
System.out.println("do not know eat what");
}
如以上代码所示,由于普通方法的参数不一样,根据参数的不一调用不同的方法体。
二、方法重写
1、什么情况下可以利用方法重写
子类在继承父类之后,父类中存在一个方法,但是在子类中对应的这个方法实现不一样这个时候我们就需要用到方法重写。
public class MiddelStudent{ //初中生
String name;
int age;
public void study(){
System.out.println("初中生每天学习八小时");
}
}
public class HightStudent extends MiddelStudent{ //高中生
public void study(){
System.out.println("高中生每天学习12小时");
}
}
就像以上代码写到的一样,有两个类,高中生类继承了初中生类,自然也继承了初中生的学习方法“study”,但是就像大家所知道的,高中生的学习时间自然不会和初中生的学习时间一样,这就可以利用方法重写来修改方法。
二、方法重写的条件
1、需要存在继承关系;
在上述代码中,高中生类:HightStudent 继承了初中生类:MiddelStudent,这样高中生类才能重写初中生类的学习方法:study()。
2、子类方法的访问修饰符要大于或等于父类方法的访问修饰符;
在上述代码中,父类MiddelStudent和子类HightStudent 类的方法访问修饰符都为public。
3、子类方法的返回值类型,方法名,必须要和父类的一致;
三、哪些方法不能重写?
1、构造方法;
2、有final关键字的方法;
3、访问修饰符是private的方法;