前言 :

很早的时候,我就知道这两个东西,但是,也仅仅是停留在知道的程度而已,对于什么是重写,什么事重载,还是感到十分的迷惑,迷茫。正好,在软考复习时又经历这两个东西,细心一点,探究了一下,有点收获,借助java程序,想分享给大家


定义:

重载(overload),重载是可使函数、运算符等处理不同类型数据或接受不同个数的参数的一种方法。简单说,就是函数或者方法有同样的名称,但是参数列表不相同的情形,这样的同名不同参数的函数或者方法之间,互相称之为重载函数或者方法,目的当然是处理不同类型数据

重写(override或者overwrite),派生类继承基类的方法,因此,在调用对象继承方法的时候,调用和执行的是基类的实现.但是,有时需要对派生类中的继承方法有不同的实现,重写"基类方法就是修改它的实现或者说在派生类中重新编写实现方法

重写一般多发生在不同的类且存在继承关系之间,而重载多是在一个类里或者一块代码段里,由于重载可以在同一个类中定义功能类似的函数,调用方法是通过传递给他们不同参数个数和参数类型来决定具体使用那个方法。这给程序员管理类的相似函数提供了极大的方便

特点

重载:函数名必须相同,返回值可以相同,也可以不同,但是特征标必须不同。

重写:子类与父类某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。如需父类中原有的方法,可使用super关键字,该关键字引用了当前类的父类,子类函数的访问修饰权限不能少于父类的

举例说明:

package test;
/**** @author 李卫中*/
public class Test {public static void main(String[] args){Person person1=new Person();        //new了一个系统默认的Person的构造方法person1.getInfo();//************************person1.name="米老师(1)";person1.age=19;person1.getInfo();              //赋值区//************************Person person2=new Person("米老师",18);     //new是Person的重载的构造方法,内带参数name,ageperson2.getInfo();//**************************Teacher teacher1=new Teacher();         teacher1.getInfo();                     //重写父类Person类的getInfo方法//**************************teacher1.name="姜老师1";teacher1.age=21;teacher1.sex="女1";teacher1.getInfo();             //赋值区//**************************Teacher teacher2=new Teacher("姜老师",20,"女");teacher2.getInfo();}
}
class Person{String name;int age;  //以上部分为Person类的成员变量Person(){}Person(String _name,int _age){   //对Person类的Person()构造方法重载,一样的方法名,不                                        一样的的参数,参数类型this.name=_name;this.age=_age;  //this,有就近声明原则,也就是说,他离哪个类近,就可以代表那个类(                               本类内,代表Person类)}public void getInfo(){System.out.println("我叫"+name+"\n"+"我的年龄是:"+age);}
}class Teacher extends Person{String sex;Teacher(String _name,int _age,String _sex){super(_name,_age);this.sex=_sex;}Teacher(){super();    //其实,如果没有super的话,编译器会默认去选择父类中没有参数的构造方法}public String teachBookName(String bookName){return bookName;}public void getInfo(){System.out.println("我叫"+name+"\n我的年龄是:"+age+"\n我的性别是"+sex);              //对父类中的getInfo()方法进行重写,算是一种覆盖}
}

运行结果:

应该很明显了吧。

收获

对于方法重载,就是说,我给你规定个处理某种情况的方法名,而内部具体参数我不做要求,你可以随意定义一个符合你需要的方法,但是要注意,方法名不能变,但是参数值,参数类型,返回值类型,就看你心情了,可以一样,也可以不一样

对于重写,我给你指定了一个方法,包括方法需要的参数类型,这些你是不能动的,但是你可以灵活的去谢你学要的方法,然后父类的方法就被覆盖了,执行子类自己的方法。

小结

感觉现在学习的知识都是对前面的深入和补充,以前我没有即时总结,在这一阶段的工程中,正是我们深入探究为什么的过程,正好可以弥补我们以前的遗憾,好好学习,打牢基础,对我们接下来的学习有百利而无一害

友情提示:如果您想知道运行结果区为何会出现如此情况,或者他们在内存里是怎么做到的,请继续关注我的系列博客(内存分析)

转载于:https://www.cnblogs.com/DoubleEggs/p/5747185.html

【java基础】重载与重写相关推荐

  1. Java构造方法 重载与重写

    文章目录 一.Java中的构造方法 二.Java方法重载与重写的区别 区别: 方法重写示例: 三.this,this(),super,super()的使用 部分内容引自<Java语言程序设计&g ...

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

    最近了解一下重载和重写  一.重载(Overloading) (1) 方法重载是让类以统一的方式处理不同类型数据的一种手段.多个同名函数同时存在,具有不同的参数个数/类型. 重载Overloading ...

  3. JAVA方法重载和重写的特征

    方法的重载: 方法重载是让类以统一的方式处理不同类型数据的一种手段. 多个同名函数同时存在,具有不同的参数个数/类型. 方法名相同,方法参数的个数或类型不同,通过个数和类型的不同来区分不同的函数; 方 ...

  4. Java方法重载与重写的区别

    重载(overload) 发生在同一个类中,方法名相同,参数列表不同,方法体不同 与返回值类型无关 编译期绑定 2.重写(override) 发生在父子类中,方法名称相同,参数列表相同(方法名称+参数 ...

  5. java方法重载和重写在jvm_重载和重写在jvm运行中的区别(一)

    1.重载(overload)方法 对重载方法的调用主要看静态类型,静态类型是什么类型,就调用什么类型的参数方法. 2.重写(override)方法 对重写方法的调用主要看实际类型.实际类型如果实现了该 ...

  6. Java 方法重载 方法重写

    方法重载规则 参数个数不同 参数个数相同,但参数列表中对应的某个参数的类型不一样 方法的返回类型和参数名称不参与重载 "编译期绑定",,因为未产生对象,只看参数.引用类型绑定方法 ...

  7. java中重载和重写

    重载: 同一个类中定义名称相同但参数个数或类型不同的方法,因此java可根据参数的个数或类型的不同来调用相应的方法. 重写(覆盖): 在子类中,定义名称,参数个数与类型均与父类完全相同的方法,用于重写 ...

  8. Java基础系列:重写hashCode和equals

    1 场景 Map的key设置为对象时,必须重写对象的hashCode和equals方法. 原因 通过对象取值时,及时相同的对象(初始化值相同),get时,会出现null值. 方案 重写对象的hashC ...

  9. Java基础-继承(+重写)

    java中通过继承,子类自动拥有了基类的所有成员变量和方法. 一.使用 (1)java中使用extends关键字实现类的继承,其语法规则为: class [extends ]{ } (2)在子类中,可 ...

  10. 【java基础】为什么重写toString()方法?

    不得不说,有很多java初学者写java实体类的时候,并没有真正理解重写toString() 方法,可能是口头知道也可能是跟风随带添加toString() 方法,并没有真正理解其意义,如果真要被问起来 ...

最新文章

  1. java lucene demo,lucene自带的两个demo的运行测试方法
  2. 人类将可能操控AI?神经网络语言处理工作原理被破解
  3. First Unique Character in a String(leetcode387)
  4. python读取只读word只读_人生苦短我学Python——Word处理之快速Word转PDF
  5. mysql date string类型_mysql date类型与string转换
  6. 第一类修正贝塞尔函数的C语言实现
  7. LATEX学习篇【二】:论文中的公式技巧QA
  8. 【OpenJ_Bailian - 2711 】 合唱队形(dp,枚举中间顶点)
  9. abctod_123456
  10. php 动态图表,excel实现动态图表的3种方法是什么
  11. java web权限设计_java web简单权限管理设计
  12. crontab命令 :Linux下定时执行脚本
  13. Gitflow Git工作流
  14. lintcode-微软笔试
  15. 单细胞分析:细胞聚类(十)
  16. 聊聊Dubbo的注册中心、配置中心以及元数据中心
  17. HF-LPX30 LPX20
  18. java 图片 黑白_Java实现彩色图片转为黑白图片
  19. 更改MyEclipse/Eclipse的工作空间名字(workspace)
  20. JAVA基础再回首(三十)——JAVA基础再回首完美结束,感概万千!

热门文章

  1. command对象提供的3个execute方法是_Python:3分钟看懂,基于 Psycopg2 的 PostgreSQL 操作指南!
  2. 服务器无限关机重启,服务器反复关机重启
  3. C# (正则表达试) 检查是否为IP地址
  4. Java实现Excel中的NORMSDIST函数和NORMSINV函数
  5. cycleGAN有matlab代码吗,CycleGAN的代码组成
  6. python彩票预测与分析_130期祥子大乐透预测奖号:后区大小分析
  7. python鼠标位置_用python3 返回鼠标位置的实现方法(带界面)
  8. 第四章节 窗体应用(windows应用程序)
  9. 1036 和奥巴马一起学编程
  10. Python入门--文件对象的常用方法,write,read,readline