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

概述

多态和重载

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


前言


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


一、多态

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

1. 定义格式

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

	// Dog是父类  Labrador是Dog类的一种,即子类
	Dog dog_1 = new Labrador();

2. 多态的作用

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

3. 多态的示例

	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. 重载的作用

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

2. 重载的原则

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

3. 重载的示例

(1) 同类下的重载

代码如下(示例):

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) 继承中的重载

代码如下(示例):

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):

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!");
	}
}

在这里插入图片描述


总结

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

最后

以上就是端庄金鱼为你收集整理的多态与重载前言一、多态二、重载三、重载和重写的对比总结的全部内容,希望文章能够帮你解决多态与重载前言一、多态二、重载三、重载和重写的对比总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部