黑马程序员-overload与override的区别

来源:互联网 发布:淘宝营销短信关闭 编辑:程序博客网 时间:2024/05/16 08:56
                            ------- android培训、java培训、期待与您交流! ----------

overload 即重载,重载是指在一个类中,可以定义相同的方法名,但参数列表不同的多个方法。其规则是:每个重载的方法都必须有一个独一无二的参数类型列表。在调用时,根据参数列表的不同,选择相应的方法。

重载举例:

 

class Tree{

  void info(){

     System.out.println("I am a tree");

  }

  void info(String str){

     System.out.println(str + "I am a tree");

  }

}

public class Overload {

   public static void main(String[] args){

      Tree t = new Tree();

      t.info();

      t.info("overload: ");

   }

}

对于构造器,也有方法重载。要想用多种方式创建对象,用方法重载,即方法名相同(即类名)而形式参数不同的构造器同时存在,就可以选择不同的方式来创建对象。

涉及到基本类型的重载时,如果传入的数据类型(实际参数类型)小于方法中声明的形式参数类型,实际数据类型就会被提升。对于char型,如果无法找到接收char参数的方法,就把char直接提升至int型来处理。

如果传入的数据类型大于方法中声明的形式参数类型,必须通过强制类型转换将其类型窄化转换,否则编译失败。

需要注意的是:不能以返回值来区分重载方法,因为当你在调用方法时,忽略了返回值类型,没有加以区分,那么编译器会不知道如何处理,将会编译失败。


override即重写:在子类中可以根据需要对从父类中继承来的方法进行重写,来满足子类方法的需求。

 重写方法是,必须和被重写的方法具有相同的方法名称,参数列表和返回值类型。

 重写方法不能使用比被重写方法更严格的访问权限。

   例如:如果父类的方法访问修饰是public,那么子类只能也是public
       如果父类的方法访问修饰是protected,那么子类可以是protected,或者是public
       如果父类的方法访问修饰是默认(包访问级别),那么子类可以是默认、protected,或者是public。

 若重写的父类方法中抛出异常,那么子类在重写时,只能跑出父类异常或其子类。若父类抛出多个异常,子类在重写父类时,只能抛出父类异常的子集。若父类方法中没有抛出异常,子类在重写时也不能抛异常,只能try/catch处理。

 静态方法只能重写静态方法。

 final方法不能被重写。


能想到的就这么多了,就先总结到这里吧,再想到了,再来补充。

原创粉丝点击