学习方法

方法重载的条件

时间:2022-09-23 12:38:54 学习方法 我要投稿

方法重载的条件

  在平日的学习中,不管我们学什么,都需要掌握一些知识点,知识点是指某个模块知识的重点、核心内容、关键部分。还在为没有系统的知识点而发愁吗?以下是小编为大家收集的方法重载的条件知识点,仅供参考,大家一起来看看吧。

  A在不同class中定义的方法 B在同一类中定义的方法 C方法名必须相同 D返回类型必须相同

  E参数一定不同 F参数可以相同。

  方法重载是指在一个类中定义多个同名的方法,但要求每个方法具有不同的参数的类型或参数的个数。调用重载方法时,Java编译器能通过检查调用的方法的参数类型和个数选择一个恰当的方法。

  方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数不同的方法。

  方法重载是让类以统一的方式处理不同类型数据的一种手段。

  Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方法。

  java多态的2种表现形式 方法重载和方法覆盖

  方法重载:同一个类中,方法名相同,参数列表不同的2个或多个方法构成方法的重载。

  方法覆盖:子类重新实现了父类中的方法。

  拓展:用java重载的方法

  public static double max(double num1, double num2) {

  if (num1 > num2)

  return num1;

  else

  return num2;

  }

  如果你调用max方法时传递的是int型参数,则 int型参数的max方法就会被调用;

  如果传递的事double型参数,则double类型的max方法体会被调用,这叫做方法重载;

  就是说一个类的两个方法拥有相同的名字,但是有不同的参数列表。

  Java编译器根据方法签名判断哪个方法应该被调用。

  方法重载可以让程序更清晰易读。执行密切相关任务的方法应该使用相同的名字。

  重载的方法必须拥有不同的参数列表。你不能仅仅依据修饰符或者返回类型的不同来重载方法。

  PHP中子类重载父类的方法介绍

  在PHP中不能定义重名的函数,也包括不能再同一个类中定义重名的方法,所以也就没有方法重载。单在子类中可以定义和父类重名的方法,因为父类的方法已经在子类中存在,这样在子类中就可以把从父类中继承过来的`方法重写。

  子类中重载父类的方法就是在子类中覆盖从父类中继承过来的方法,父类中的方法被子类继承过来不就可以直接使用吗?为什么还要重载呢?因为有一些情况我们必须要覆盖的。例如,有一个“鸟”类,在这个类中定义了鸟的通用方法“飞翔”。将“鸵鸟”类作为它的子类,就会将“飞翔”的方法继承过来,但只要一调用“鸵鸟”类中的这个“飞翔”的方法,鸵鸟就会飞走。虽然鸵鸟是不会飞的,但其他特性都具有“鸟类”的特性,所以在声明“鸵鸟”类时还是可以继承“鸟”类的,但必须在“鸵鸟”类中将“鸟”类中继承过来的“飞翔”方法改写,就需要在子类中重载父类中的方法。

  在下面的例子中,声明的Person类中有一个“说话”方法,Student类继承Person类后可以直接使用“说话”方法。但Person类中的“说话”方法只能说出它自己的成员属性,而Student类对Person类进行了扩展,多添加了几个新的成员属性。代码如下所示:

  name = $name;$this ->sex = $sex;$this ->age = $age;}//在人类中声明一个通用的说话方法,介绍一下自己function say(){echo "我的名字:".$this-> name.",性别:".$this ->sex.",年龄:".$this ->age."。

  ";}}//声明一个学生类,使用extends关键字扩展(继承)person类class Student extends Person {private $school; //在学生类中声明一个所在学校school的成员属性//覆盖父类中的构造方法,在参数列表中添加一个学校属性,用来创建对象并初始化成员属性function __construct($name="",$sex="男",$age=1,$school=""){$this ->name = $name;$this ->sex = $sex;$this ->age = $age;$this ->school = $school;}function study(){echo $this ->name."正在".$this ->school."学习

  ";}//定义一个和父类中同名的方法,将父类中的说话方法覆盖并重写,多说出所在的学校名称function say(){echo "我的名字:".$this ->name.",性别:".$this ->sex.",年龄:".$this ->age.",在".$this ->school."学校上学

  ";}}$student= new Student("张三","男",20,"edu"); //创建一个学生对象,并传给一个学校名称参数$student -> say(); //调用学生类中覆盖父类的说话方法?>

  改程序运行后输出的结果为:

  我的名字叫:张三,性别:男,我的年龄是:20,在edu学校上学

  在PHP中,提供了在子类重载的方法中调用父类被覆盖方法的功能。这样就可以在子类重写的方法中,继续使用从父类继承过来并被覆盖的方法,然后再按要求多添加一些新功能。调用的格式是使用“parent:方法名”在子类的重载方法中调用父类中被覆盖的方法。将上例中的代码修改一下,在子类重写的构造方法中使用“parent::__construct()”调用父类中被覆盖的构造方法,再多添加一条对子类中新扩展的成员属性初始化的代码。在子类中重写的say()方法中使用“parent::say()”调用父类中被覆盖的say()方法,再添加上输出子类成员属性的功能。

  代码如下所示:

  name = $name;$this ->sex = $sex;$this ->age = $age;}//在人类中声明一个通用的说话方法,介绍一下自己function say(){echo "我的名字:".$this-> name.",性别:".$this ->sex.",年龄:".$this ->age."。

  ";}}//声明一个学生类,使用extends关键字扩展(继承)person类class Student extends Person {private $school; //在学生类中声明一个所在学校school的成员属性//覆盖父类中的构造方法,在参数列表中添加一个学校属性,用来创建对象并初始化成员属性function __construct($name="",$sex="男",$age=1,$school=""){//调用父类中被覆盖的构造方法,为从父类中集成过来额出行赋初值parent::__construct($name,$sex,$age);$this ->school = $school;}function study(){echo $this ->name."正在".$this ->school."学习

  ";}//定义一个和父类中同名的方法,将父类中的说话方法覆盖并重写,多说出所在的学校名称function say(){parent::say(); //调用父类中被本方法覆盖掉的方法echo "在".$this ->school."学校上学

  ";}}$student= new Student("张三","男",20,"edu"); //创建一个学生对象,并传给一个学校名称参数$student -> say(); //调用学生类中覆盖父类的说话方法?>

  上面的例子输出的结果和前一个例子是一样的,但在本例中通过在子类中直接调用父类中被覆盖的方法要简便很多。另外,在子类覆盖父类的方法时一定要注意,在子类中重写的方法访问权限一定不能低于父类被覆盖的方法的访问权限。例如,如果父类中的访问权限是protected,那么在子类中重写的方法的权限就要是protected或public。

【方法重载的条件】相关文章:

方法重载与方法重写12-08

java方法重载12-08

方法重载的好处12-08

方法重载的特点12-08

方法重载与重写12-08

什么是方法重载07-27

方法重载和方法覆盖12-08

方法重写和方法重载12-08

java中方法重载12-08