`
sean2012
  • 浏览: 46387 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

重载VS重写

阅读更多
重载VS重写


一、什么是重载?
重载是一种静态地多态机制,通过相同的方法名来实现不同的方法。

重点:
1)那么是如何达到相同的方法名实现不同的方法的呢?——根据方法体的实参和型参来决定相应的方法。
2)构造方法和普通方法都可以重载,但是构造方法没有返回类型。
3)私有的重载方法不能被生成的对象直接调用

实例分析:
package TextExtends;
/**
 * 学生类
 * @author Sean 2012 - 8
 */
public class Student {
	/**
	 * 重载方法
	 * @param number
	 */
	public void print(String number){
		System.out.println("学号:"+number);
	}
	/**
	 * 重载方法一
	 * @param number
	 * @param name
	 */
	 void print(String number,String name){
		System.out.println("学号:"+number+"  姓名:"+name);
	}
	/**
	 * 重载方法二
	 * @param number
	 * @param name
	 * @param age
	 */
	 void print(String number,String name,int age){
		System.out.println("学号:"+number+"  姓名:"+name+"  年龄:"+age);
	}
	/**
	 * 重载方法三
	 * @param number
	 * @param name
	 * @param age
	 * @param score
	 */
	 void print(String number,String name,int age,double score){
		System.out.println("学号:"+number+"  姓名:"+name+"  年龄:"+age+"  分数:"+score);
	}
}

package TextExtends;
/**
 * 主程序类
 * @author Sean 2012 - 8
 */
public class Master {
	/**
	 * 主程序入口
	 * @param args
	 */
	public static void main(String[] args) {
		/**
		 * 创建三个学生信息
		 */
		Student student1 = new Student();
		Student student2 = new Student();
		Student student3 = new Student();
		Student student4 = new Student();
		/**
		 * 显示学生信息
		 */
		student1.print("000001");
		student2.print("000002", "李四");
		student3.print("000003","王五",17);
		student4.print("000003","赵六",18,89.78);
	}
}


在代码中Student类中重载了四个print方法,在主程序中调用方法时,会根据调用时使用的参数来决定调用相应的方法。

结果显示:

学号:000001
学号:000002  姓名:李四
学号:000003  姓名:王五  年龄:17
学号:000003  姓名:赵六  年龄:18  分数:89.78

二、什么是重写?
重写就是重写创建父类的方法;因此重写的前提是拥有继续关系。

重点:
1)在父类中已有的方法可以在子类中重写(重新创建);如果想要使用子类重写的方法,可以采用子类定义子类(子类 对象名 = new 子类();)或父类定义子类(父类 对象名 = new 子类();)
2)父类中私有方法是不能被重写的。

实例分析:
package TextRewrite;
/**
 * 学生类
 * @author Sean 2012 - 8
 */
public class Student {
	/**
	 * 定义了一个方法
	 */
	 void print(){
		System.out.println("我是父类!!!");
	}
}

package TextRewrite;
/**
 * 大学生类
 * @author Sean 2012-8
 */
public class CollegeStudent extends Student{
	/**
	 * 重写父类中的print方法
	 */
	public void print(){
		System.out.println("我是子类中的方法!!!");
	}
}

package TextRewrite;
/**
 * 主程序类
 * @author Sean 2012 - 8
 */
public class Master {
	/**
	 * 主程序入口
	 * @param args
	 */
	public static void main(String[] args) {
		/**
		 * 创建三个学生信息
		 */
		Student student1 = new Student();
		Student student2 = new CollegeStudent();
		CollegeStudent student3 = new CollegeStudent();
		
		/**
		 * 调用对象中的print方法
		 */
		student1.print();
		student2.print();
		student3.print();
	}
}


显示结果:
我是父类!!!
我是子类中的方法!!!
我是子类中的方法!!!

分享到:
评论
2 楼 sean2012 2012-09-14  
哦!Sorry!是我弄错啦!谢谢提供宝贵评论,改一下:“私有方法能被重载,而私有的重载方法不能被生成的对象直接调用!”
1 楼 wangtu123 2012-09-11  
引用
3)私有方法不能被重载。


这个不对吧

相关推荐

    java中的重载和重写的区别

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

    C#重写重载与多态

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

    c++ 重载、覆盖、重写

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

    重载与覆写/重写的区别

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

    重载,重写,覆盖,多态

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

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

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

    Java中重载和重写总结

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

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

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

    重载、重写、重构.md

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

    方法重载和方法重写

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

    Java的重载和重写

    Java编程语言中的重载(Overloading)和重写(Overriding)是两个关键的概念,它们都是多态性的重要体现,但各自有着不同的含义和规则。 首先,我们来详细了解一下方法的重载。重载,简单来说,就是在一个类中定义多个...

    重载重写重定义测试代码

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

    java中重载与重写

    在Java编程语言中,方法的重载(Overloading)与重写(Overriding)是两个非常重要的概念。它们虽然只有一字之差,但其实质却大相径庭。理解这两者的不同对于深入掌握Java语言至关重要。 ### 一、重载(Overloading...

    继承与多态,重载和重写

    总结起来,继承、多态、重载和重写是面向对象编程中的核心概念,它们相互关联,共同构建出灵活、可扩展的代码结构。通过继承,我们可以构建类的层次结构,多态则提供了代码的通用性和灵活性。而重载和重写则是实现...

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

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

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

    ### Java 方法的艺术:重载与重写的深度解析 在 Java 编程语言中,方法的重载(Overloading)和重写(Overriding)是面向对象编程的重要概念。这两种技术使得方法能够在不同的上下文中表现出不同的行为,从而增强了...

    重写和重载的区别

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

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

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

    重载和重写--java

    重载和重写--java

Global site tag (gtag.js) - Google Analytics