java 重载赋值_【java基础】重载与重写

前言 :

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

person2.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()方法进行重写,算是一种覆盖

}

}

运行结果:

48e8502742a2ded436bcae3b246f0dd0.png

应该很明显了吧。

收获

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值