方法重载和方法重载的区别以及方法重写的原理

一、重写和重载

  
 

1、重载(overload):

方法重载是指同一个类中的多个方法具有相同的名字

方法名 相同
参数列表 不同
返回类型 可以相同也可以不相同
  无法以返回型别作为重载函数的区分标准
  重载是发生在编译时的,因为编译器可以 根据参数的类型来选择使用那个方法

 
 
 
 

2、重写(override):

方法重写是存在子父类之间的

方法名 相同
参数列表 相同
返回值类型 可以相同也可以是原类型的子类型
访问性 比父类被重写方法更好访问
异常 不能比父类被重写方法声明更多的异常(里氏代换原则)
final final修饰的方法不能重写
prvate private修饰的不能重写
static static修饰的不能重写
  抽象类接口的方法必须要重写
  重写发生在运行时,因为编译期编译器不知道并且没办法确定该去调用哪个方法,JVM会在代码运行的时候做出决定。

 
 
 
 

3、重载和重写的不同:

  重载 重写
使用条件 同一类 继承关系,子类中
参数列表 不同 相同
返回类型 可同可不同 可以相同也可以是原类型的子类型
访问权限 无要求 有特殊要求,见规则
次数限制 重载多次 父类方法只能被子类重写一次
作用时间 编译期 运行期

 
 
 
 

二、方法重写的原理

class Shape{
    
    
    void getArea(){
    
    //面积
       System.out.println("长*宽");
    }
    void  getCir(){
    
    //周长
     
    }
}

class Circle extends Shape{
    
    
   @Override
   void getArea(){
    
    
      System.out.println("长*宽");
}


class TestDemo{
    
    
   public static void main (String[] args){
    
    
   Circle circle = new Circle();
   circle.getArea();
   }
}   

在这里插入图片描述
方法重写的原理:方法区中的地址覆盖

猜你喜欢

转载自blog.csdn.net/Super_Powerbank/article/details/106294466