方法重写
方法重写是发生在运行期间的,子类对父类中的方法的内部逻辑进行重新改造,不能改变外部的定义。
特点
1:方法重写发生在子类中;
2:重写方法传入的参数必须与父类中方法的传入参数一致;
3:返回值类型,方法名必须与父类的一致,抛出异常的范围小于父类,访问修饰符的权限要大于父类;
4:如果父类方法的访问修饰符为(private/final/static),则子类方法就不能被重写;
5:父类的构造方法不能被子类重写;
public class Test{
public static void main(String[] args) {
DemoSon demoson=new DemoSon();
//调用DemoSon类中的dosth()方法
demoson.dosth(); //输出:DemoSon子类重写的Demo父类的dosth()方法
Demo1 demo1=new Demo1();
//直接调用父类Demo的dosth()方法
demo1.dosth();//输出:Demo父类的方法
}
}
class Demo{
public void dosth(){
System.out.println("Demo父类的方法");
}
}
class DemoSon extends Demo{
public void dosth(){//实现Demo类中dosth()方法的重写
System.out.println("DemoSon子类重写的Demo父类的dosth()方法");
}
}
class Demo1 extends Demo{
}
方法重载
方法重载是发生在编译期间的,同一个类中,多个同名方法根据传入参数不同,执行不同的逻辑处理。
特点
1:方法重载必须在同一个类中;
2:方法的参数列表必须不一致(类型不一致\数量不一致\顺序不一致);
3:方法的返回值和访问修饰符可以不同;
4:构造方法可以被重载;
/*
* Dome类中实现了dosth()方法的三次重载
*/
public class Dome{
public void dosth(){
System.out.ptinln("没有参数的dosth()方法");
}
public void dosth(int n){
System.out.ptinln("一个int类型的参数的dosth()方法");
}
public void dosth(int n,String str){
System.out.ptinln("一个int类型的参数和一个String类型参数的dosth()方法");
}
}