`

重载与重写的区别

阅读更多

重载(Overloading)


    (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函数同时存在,具有不同的参数个数/类型。

            重载Overloading是一个类中多态性的一种表现。


    (2) Java的方法重载,就是在类中可以创建多个方法,它们具有相同的名字,但具有不同的参数和不同的定义。

             调用方法时通过传递给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性。


    (3) 重载的时候,方法名要一样,但是参数类型和个数不一样,返回值类型可以相同也可以不相同。无法以返回型别作为              重载函数的区分标准。


    下面是重载的例子:
    package day02//这是包名

   //注意:除构造器以外,编译器禁止在其他任何地方中调用构造器。

package day02;

/**
 * 构造器(Constructor) 构造方法
 * 构造器用于初始化对象,经常用于初始化对象的属性
 * 构造器 Point(3, 4) 用于创建初始化Point对象,其中
 * (3,4) 是初始化参数,用于初始化Point对象的属性
 * Point p = new Point(3, 4);


 * 构造器的语法: 
 *  1) 构造器的方法名必须与类名一样
 *  2)可以有构造器参数,是创建对象的前提条件
 *    如:创建Point的前提条件是(3, 4)
 *  3) 不能声明返回值类型
 *  4)使用new 运算调用,new 运算结果是对象实例
 *    如:new Point(3, 4)
 *  5) 构造器可以重载,参数一定不同。
 */
public class Demo05 {
public static void main(String[] args) {
Point1 p1 = new Point1(3,4);//调用构造器
System.out.println(p1.x + ","+p1.y);
Point1 p2 = new Point1(5,5);
System.out.println(p2.x + ","+p2.y);
Point1 p3 = new Point1(5);//方便一些
System.out.println(p3.x + ","+p3.y);
}
}
class Point1{
int x; int y;
/** 构造器: 创建点必须有x,y坐标 */
public Point1(int x, int y) {
this.x = x; this.y = y;
}
/** 重载的构造器:创建对角线上的点 */
public Point1(int x){
this.x = x; this.y = x;
}
}

 

重写(Overriding)


    (1) 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方法与其父类有相同的名称和参数,我们说该方法被重写 (Overriding)。在Java中,子类可继承父类中的方法,而不需要重新编写相同的方法。

但有时子类并不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。

方法重写又称方法覆盖。


    (2)若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。

如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类。


    (3)子类函数的访问修饰权限不能少于父类的;
    下面是重写与重载区别的例子

package day02;

/**
 * 比较 方法(Method) 和 构造方法(Constructor)(构造器) 
 * 语法方面
 * 1)构造器的名字,必须与类名一致!
 *   方法一般不与类名一致
 * 2)构造器不能声明返回值,方法必须声明返回值
 *  方法无返回值使用void声明。
 * 3)方法是用引用调用,构造器使用new运算调用 
 * 用途功能方面
 * 1)方法是用来作为对象的功能,如:点的移动,格子的下落
 * 2)构造器是用于创建初始化对象的。
 */
public class Demo06 {
public static void main(String[] args) {
Foo foo = new Foo(5);//调用构造器
foo.add();// 调用方法
System.out.println(foo.a);//6
}
}
class Foo{
int a;
public Foo(int a) {//Constructor
this.a = a;
}
public void add(){//Method
this.a++;
}
}

分享到:
评论

相关推荐

    重载与覆写/重写的区别

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

    C#重写重载与多态

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

    C++中重载与重写函数区别及虚函数

    ### C++中重载与重写函数的区别及虚函数详解 #### 一、虚函数概述 **1.1 虚函数定义与作用** 在C++中,虚函数是一种特殊的成员函数,它允许子类覆盖父类的行为。虚函数的核心在于实现多态性,即在运行时动态决定...

    java中的重载和重写的区别

    总结一下,重载和重写之间的主要区别在于: 1. 重载发生在同一类内,而重写发生在父类和子类之间。 2. 重载依靠参数列表区分方法,而重写需要方法名、参数列表完全一致。 3. 重载不涉及继承关系,而重写必须在继承...

    java中重载与重写

    在Java编程语言中,方法的重载(Overloading)与重写(Overriding)是两个非常重要的...通过对比分析,我们可以更加清晰地理解Java中重载与重写之间的区别及其应用场景。这对于编写高效、可维护的Java代码至关重要。

    C#中重载与重写区别分析

    前段时间,刚学完C#,其中重载、重写傻傻分不清楚。如今通过查阅资料对这两者有了一个大概的理解,不足之处还请多多指教。 二、定义  重载:在同一定义域内(比如一个类里面)。方法名相同,参数个数、次序、类型...

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

    1、重载  方法的重载是同一个类中多态性的一种表现。  方法重载须遵循如下两条规则  (1)方法名相同。  (2)参数列表不同。  注意:方法的返回值类型不能用来区分重载的方法。这是因为当调用一个方法时...

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

    "java 重载,重写以及继承,多态的区别" Java 中的重载、重写、继承和多态是四个不同的概念,它们之间存在一定的关系,但也存在明显的区别。 重载(Overload) 重载是指在同一个类中可以定义多个同名的方法,但这些...

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

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

    java中重载与重写的区别

    Java 中的重载(Overloading)与重写(Overriding)是两个重要的概念,它们都是实现多态性的重要方式,但两者之间存在着显著的区别。 **重载(Overloading)** 重载是指在同一个类中可以有多个同名方法,但这些...

    java中重载与重写的区别.doc.docx

    Java 中的重载(Overloading)和重写(Overriding)是两个重要的概念,它们都是实现多态性的重要方式,但两者之间存在着显著的区别。 **重载(Overloading)** 重载是同一个类中不同方法的实现,这些方法拥有相同...

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

    #### 三、重载与重写的区别 - **作用范围**:重载是同一个类中的方法,重写是父子类中的方法。 - **参数列表**:重载要求参数列表不同,重写要求参数列表相同。 - **返回类型**:重载可以改变返回类型,重写要求...

    c++ 重载、覆盖、重写

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

    Java重写与重载(区别与用途)

    我根据我的理解来谈谈Java中重写方法与重载方法的区别。  重写  Java 中重写又叫覆盖,主要是指继承(extends)父类或者实现(implements)接口时将父类或者接口中已经存在的方法进行重新定义。重写的方法在父类...

    重写和重载的区别

    ### 重写与重载的区别 #### 一、概述 在面向对象编程中,方法的重写(Overriding)和重载(Overloading)是非常重要的概念。这两种机制可以帮助程序员更灵活地管理和组织代码,提高代码的复用性和可扩展性。 ####...

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

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

    重载,重写,覆盖,多态

    ### 重载、重写、覆盖与多态的深刻剖析 在面向对象编程语言中,如Java、C#等,重载(Overloading)、重写(Overriding)、覆盖(也称为重写)以及多态(Polymorphism)是几个非常重要的概念。它们之间既有关联又有...

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

    JAVA中的方法重写与方法重载区别 JAVA 中的方法重写和方法重载是两个重要的概念,在面向对象程序设计语言中尤为重要。方法重写和方法重载都是多态性的体现,但它们之间有着本质的区别。 方法重写(Override)是指...

    Java中重载和重写总结

    Java 中重载和重写总结 Java 中的重载(Overloading)和重写(Overriding)是两个非常...方法重载是让类以统一的方式处理不同类型数据的一种手段,而方法重写是父类与子类之间的多态性,对父类的函数进行重新定义。

Global site tag (gtag.js) - Google Analytics