我是靠谱客的博主 端庄金鱼,这篇文章主要介绍多态与重载前言一、多态二、重载三、重载和重写的对比总结,现在分享给大家,希望可以做个参考。

多态和重载

  • 前言
  • 一、多态
    • 1. 定义格式
    • 2. 多态的作用
    • 3. 多态的示例
  • 二、重载
    • 1. 重载的作用
    • 2. 重载的原则
    • 3. 重载的示例
      • (1) 同类下的重载
      • (2) 继承中的重载
  • 三、重载和重写的对比
  • 总结


前言


当一个函数根据有限范围、单独指定的类型和组合时表示不同的和潜在的异构实现时,可以使用功能重载来实现多态。即一个方法可以有同名多种实现。


一、多态

多态是指某对象的某一行为在不同情况下的不同表现形式。

1. 定义格式

定义格式:父类类型 变量名=new 子类类型();

复制代码
1
2
3
// Dog是父类 Labrador是Dog类的一种,即子类 Dog dog_1 = new Labrador();

2. 多态的作用

  1. 多态用于形式参数类型的时候,可以接受更多类型的数据 ;
  2. 多态用于返回值类型的时候,可以返回更多类型的数据;

3. 多态的示例

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class OverloadExample{ public static void main(String args[]){ System.out.println(add("A", "B")); System.out.println(add("A", "B", "C")); System.out.println(add(1, 2)); } //输入字符 a和 b,返回字符串类型 public static String add(String a, String b){ return a.concat(b); } //输入字符 a,b和 c,返回字符串类型 public static String add(String a, String b, String c){ return a.concat(b).concat(c); } //输入整型数 a和 b,返回整数型 public static int add(int a, int b){ return a+b; } }

二、重载

多个方法具有相同的名字,但有不同的参数列表或返回值类型。在编译阶段具体决定具体要调用哪个方法。

1. 重载的作用

复制代码
1
2
根据参数列表进行方法的最优匹配,便于用户根据不同的参数调用,调用相同的函数。

2. 重载的原则

(1)必须使用不同的参数列表;
(2)可以使用相同或者不同的返回值类型;
(3)可以使用相同或者不同的权限修饰符;
(4)可以在同一个类内重载,也可以在子类中重载;

3. 重载的示例

(1) 同类下的重载

代码如下(示例):

复制代码
1
2
3
4
5
6
7
8
9
10
public void changeSize(int size, String name, float pattern) { } //不同的参数列表,相同的权限修饰符 public void changeSize(int size, String name) { } //可以使用不同的返回值 public int changeSize(int size, float pattern) { } public void changeSize(float pattern, String name) { }

(2) 继承中的重载

代码如下(示例):

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public Class Animal{ public void eat(){ System.out.println("I want to have water!"); } } public Class Cat extends Animal{ //输入某时刻想吃的食物 public void eat(String food, String time){ System.out.println("At " + time "I like to eat " + food); } //无输入 public void eat(){ System.out.println("Meow meow, I'm thirsty, I want to have water!"); } }

三、重载和重写的对比

  1. 重写时,父类和子类的方法有相同的签名
    重载时,父类和子类的方法有不同的签名
    如果父类和子类 签名不同,则为重载
  2. 对于异常而言,重写必须要求子类比父类可以抛出更少的异常,但是一定不能抛出新的异常。
  3. 重写根据对象类型进行调用,而重载根据参数列表进行调用。
  4. 子类重写的时候不能设置比父类更严苛的权限,但重载不做要求,可以任意改变权限修饰符。
  5. 子类重载了父类的方法,子类仍然可以继承父类的方法。

下面代码是根据参数列表的不同,区分开方法的重载(overloads)和重写(override):

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public Class Animal{ public void eat(int weight){ } } public Class Cat extends Animal{ //此方法改变了参数列表,是重载(overloads)的示例 public void eat(double weight){ System.out.println("I like to eat " + weight + "fish!"); } //此方法未修改参数列表,是重写(override)的示例 public void eat(int weight){ System.out.println("I like to eat " + weight + "fish!"); } }

在这里插入图片描述


总结

本文简单介绍了多态和重载的知识,并举出一些示例将重载与重写进行对比。若有纰漏,敬请指正。

最后

以上就是端庄金鱼最近收集整理的关于多态与重载前言一、多态二、重载三、重载和重写的对比总结的全部内容,更多相关多态与重载前言一、多态二、重载三、重载和重写内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部