`
北堂泠川
  • 浏览: 9772 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
最近访客 更多访客>>
社区版块
存档分类
最新评论

方法的重载,重写,它们的区别

 
阅读更多
一. 首先,让我们谈一下方法的重载。
1.重载的概念
方法重载是让类以统一的方式处理不同类型数据的一种手段。
要实现方法重载必须满足的条件是:
1.方法的名字必须要完全相同
2.方法所带的参数个数或参数类型或参数的顺序要不同。
简单来说,Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。
当我们调用方法时通过传递给它们的不同参数个数和参数类型或者参数个数来决定具体使用哪个方法, 这也就是多态性。
2.需要注意的是:重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。
无法以返回型别作为重载函数的区分标准。这是需要特别强调的地方。
下面我们通过一个具体的简单例子来看一下方法的重载究竟是怎么一回事。
定义一个Calculate类,求圆和矩形的面积,代码如下

public class Calculate {
	//定义一个可以表示圆周率的常量PI
	//在关键字里我们已经说过了,final成员变量表示常量只能被赋值一次,赋值后值不再改变
	public final float PI=3.14159f;
	//求圆形的面积
	//定义一个用于计算面积的方法getArea()
	public float getArea(float r){
		//将圆面积赋给area
		float area = PI*r*r;
		return area;
	}
	
	//求矩形的面积
	//重载getArea的方法
	public float getArea(float c,float k){
		//为变量赋值
		float area = c*k;
		return area;
	}
	public static void main (String [] args){
		//创建calculate类的对象来为其分配内存
		Calculate calculate = new Calculate();
		//为圆的半径赋值
		float r = 8 ;
		float areaCircle=calculate.getArea(r);
		System.out.println("求半径为"+r+"的圆的面积是"+areaCircle);
		//为矩形的长和宽赋值
		float c = 10;
		float k = 20;
		float areaRect = calculate.getArea(c,k);
		System.out.println("求长为"+c+"宽为"+k+"的矩形的面积是"+areaRect);	
	}
}										
 


二. 接下来我们说一下方法的重写
1.重写的概念
方法重写是指在子类中定义的一个方法 ,其名称 、返回类型及参数列表正好与父类中某个方法的名称 、 返回类型及 参数列表相匹配,
那么我们就可以说,子类的方法重写了父类的方法。 

重写方法的规则:
1. 参数列表必须完全与被重写的方法的相同,否则不能称其为 重写而是重载。
2. 返回的类型必须一直与被重写的方法的返回类型相同,否则 不能称其为重写而是重载。 访问修饰符的限制一定要大 于被重写方法的访问修饰符 (public> protected>默认>private)
 
例如:


//创建一个Person类
public class Person {
	private String name;//定义名字属性
	private int age;//定义年龄属性
	public void setName(String name)  {//定义设置名字的方法
		this.name=name;
		}
	public void setAge(int age) {//定义设置年龄的方法
		this.age=age;
		}
	public String getName() {//定义获取名字的方法
		return name;
		}
	public int getAge(){//定义获取年龄的方法
		return age;
		}
	public String getInfo() {return "Name: "+ name + "\n" +"age: "+ age;
	}
}
 
public class Student extends Person {
	private String school;
	public String getSchool()  {
		return school;
		}
	public void setSchool(String school) {
		this.school =school;
		}
	public String getInfo() {
	return  "Name: "+ getName() + "\nage: "+ getAge()+ "\nschool: "+ school;
	}
}
 
public class TestOverWrite {
	public static void main(String arg[]){
	Student student = new Student();
	Person person = new Person();
	person.setName("people");
	person.setAge(100);
	student.setName("John");
	student.setAge(21);
	student.setSchool("CSU");
	System.out.println(person.getInfo());
	System.out.println(student.getInfo());
	}
}
 
输出结果:
Name: people
age: 100
Name: John
age: 21
school: CSU








分享到:
评论

相关推荐

    JAVA中的方法重写与方法重载区别

    方法重写和方法重载都是多态性的体现,但它们之间有着本质的区别。 方法重写(Override)是指在子类中定义的一个方法,其名称、返回类型及参数列表正好与父类中某个方法的名称、返回类型及参数列表相匹配,这样可以...

    重载与覆写/重写的区别

    重载与覆写/重写的区别 区别 重载 覆写 1 单词 OverLoading Override 2 概念 方法名称相同,参数的类型或个数不同 方法名称相同,参数的类型或个数相 同,返回值类型相同 3 范围 发生在一个类之中...

    方法重载和方法重写

    在编程语言中,方法重载(Overloading)和方法重写(Overriding)是两个非常重要的概念,它们都是实现多态性(Polymorphism)的关键机制。本文将深入探讨这两个概念,以及它们在实际编程中的应用。 ### 方法重载...

    C#重写重载与多态

    在C#编程语言中,重写、重载和多态是面向对象编程的三大核心特性,它们对于构建灵活、可扩展的代码结构至关重要。 首先,我们来看“重写”。重写(Override)允许子类对从基类继承来的方法进行重新定义,以便提供...

    java中的重载和重写的区别

    Java中的重载(Overloading)和重写(Overriding)是面向对象编程中两个重要的概念,它们体现了Java的多态性。多态性是面向对象编程的三大特性之一,另外两个是封装和继承。 首先,让我们详细解释一下方法的重载。重载...

    Java方法重载和方法重写的区别.docx

    Java编程语言中,方法的两种重要特性是方法重载(Overloading)和方法重写...理解并熟练运用方法重载和方法重写是成为Java开发人员的关键技能,它们在实现面向对象设计原则,如封装、继承和多态时起着至关重要的作用。

    重写(override)和重载(overload)的区别

    在C#编程语言中,重写(Override)和重载(Overload)是两种非常重要的概念,它们分别涉及对象多态性和方法的可选性。理解这两者的区别对于编写高效且易于维护的代码至关重要。 首先,让我们深入了解一下重写(Override)...

    重载重写重定义测试代码

    在C++编程语言中,"重载"(Overloading)、"重写"(Overriding)和"重定义"(Redefinition)是三个关键的概念,它们对于理解和掌握面向对象编程至关重要。下面将详细阐述这三个概念及其在实际编程中的应用。 **1. ...

    java 重载,重写以及继承,多态的区别

    Java 中的重载、重写、继承和多态是四个不同的概念,它们之间存在一定的关系,但也存在明显的区别。 重载(Overload) 重载是指在同一个类中可以定义多个同名的方法,但这些方法的形参个数或类型必须不同。编译器...

    Java重写和重载概念及区别梳理

    在编程语言中,Java的重写(Override)和重载(Overload)是两个非常重要的概念,它们在类与对象的多态性中起到关键作用。理解并掌握这两个概念是成为一名合格的Java开发者的基础。 首先,我们来谈谈重写(Override...

    java中重载与重写的区别.pdf

    Java 中重载与重写的区别 Java 中的重载(Overloading)和重写(Overriding)是两个不同的概念,它们都是 Java 语言中实现多态性的手段。 方法重载(Overloading) 方法重载是让类以统一的方式处理不同类型数据的...

    c++ 重载、覆盖、重写

    ### C++中重载、重写(覆盖)与隐藏的概念及区别 #### 一、引言 在C++面向对象编程中,理解重载、重写(覆盖)以及隐藏的概念至关重要。这些概念不仅有助于我们更好地设计类和继承体系,还能帮助我们避免一些常见的...

    Java重载和重写的区别--源码实例

    Java中的重载(Overloading)和重写(Overriding)是面向对象编程中的两种关键特性,它们涉及到方法的多态性。理解这两者的区别对于编写高效、可维护的代码至关重要。 **重载(Overloading)**是指在一个类中,可以有多个...

    Java中方法重写与方法重载的比较.pdf

    Java中的方法重写(Overriding)与方法重载(Overloading)是面向对象编程中两个重要的概念,它们在实现多态性和代码复用时起到关键作用。本文将深入探讨这两个概念,以及它们在Java编程中的具体应用和区别。 1. **...

    Java中重载和重写总结

    Java 中的重载(Overloading)和重写(Overriding)是两个非常重要的概念,它们都是多态性的体现形式。 一、Java 中的重载(Overloading) Java 中的重载是指在同一个类中可以创建多个方法,它们具有相同的名字,...

    方法的重载和重写1

    在编程语言中,方法的重载(Overloading)和重写(Overriding)是两种不同的多态性表现,它们在类的继承体系中扮演着重要角色。本文将深入探讨这两种概念,以及它们在实际编程中的应用和规则。 首先,我们来看方法...

    Java方法重载和重写原理区别解析

    "Java方法重载和重写原理区别解析" Java 是一种面向对象的编程语言,方法重载和重写是两个非常重要的概念,它们都是Java编程语言中的一部分。本文主要介绍了Java方法重载和重写原理区别解析,通过示例代码介绍的...

    重载、重写、重构.md

    总结来说,重载、重构和重写是C#中非常重要的概念,它们分别涉及方法的命名、代码结构的优化以及继承关系中的方法实现。掌握这些概念有助于编写更高质量的代码,并能够更好地应对未来的需求变化。

    Java方法的艺术:重载与重写的深度解析

    Java 中的方法重载和重写是实现多态性的两种方式,它们使得方法可以根据不同的上下文表现出不同的行为。通过本文的介绍,读者应该对 Java 中如何实现方法的重载和重写有了深入的理解。掌握这两种技术,将能够编写出...

Global site tag (gtag.js) - Google Analytics