Java中的方法重载:理解与实例

发表时间: 2018-12-22 11:49

1.1.方法重写(覆写overwrite)

1.1.1.方法重写的概念

当子类继承父类后,可以直接拥有父类非私有的成员并可以直接调用父类非私有方法。

如果子类认为父类提供的方法不满足自己的需求,子类可以按照子类自身的逻辑重新定义继承过来的父类方法,这个重新定义父类方法的过程叫做方法重写。方法重写后,通过子类对象调用这个方法,调用的就是子类重写后的方法。

一般开发中,子类重写父类方法经常发生;

举例:

描述一个手机类,它具有打电话和发短信的功能;

智能手机打电话的功能更先进,可以视频通话;短信也可以发语音、图片等;

表示老的手机:

/**

*

* Phone

*表示老的手机

*@author 快学大数据

* 2018年6月19日 上午11:27:23

*/

public classPhone {

privateStringnum;//手机号

publicPhone() { }

publicPhone(Stringnum) {

this.num=num;

}

publicString getNum() {

return num;

}

public voidsetNum(Stringnum) {

this.num=num;

}

/**

*给别人打电话

*@paramtargNum目标手机号

*/

public voidcall(StringtargNum) {

System.out.println(num+"给 "+targNum+"打电话");

}

/**

*给别人发短信

*@paramtargNum:收信人手机号

*@parammsg:发送的短信内容

*/

public voidsendMsg(StringtargNum,Stringmsg) {

System.out.println(num+"给"+targNum+"发送短信,内容是:"+msg);

}

}

表示新的手机:

public classNewPhoneextendsPhone{

publicNewPhone() {}//无参构造函数

//有参构造函数,将接受的参数通过super语句传给父类

publicNewPhone(Stringnum) {

super(num);

}

//因为老的手机的打电话和发短信的功能,不满足新的手机的要求,所以

//需要重写父类打电话和发短信的方法

/**

*给别人打电话

*@paramtargNum目标手机号

*/

public voidcall(StringtargNum) {

System.out.println(getNum() +"和"+targNum+"视频通话中……");

}

/**

*给别人发短信

*@paramtargNum:收信人手机号

*@parammsg:发送的短信内容

*/

public voidsendMsg(StringtargNum,Stringmsg) {

Stringnum= getNum();

System.out.println(num+"给"+targNum+"发送一个笑脸表情!");

System.out.println(num+"给"+targNum+"发送短信,内容是:"+msg);

System.out.println(num+"又给"+targNum+"发送一段语音!");

}

}

测试类:

public classTest {

//描述一个手机类,它具有打电话和发短信的功能;

public static voidmain(String[]args) {

//创建一个手机,手机号为:12345678912

Phonephone=newPhone("12345678912");

//调用phone的方法,模拟打电话

phone.call("18888888888");

//调用phone对象的方法,模拟发短信

phone.sendMsg("18888888888","刚才给你打电话啦");

System.out.println("------------------------------");

//接下来,定义一个类描述新的手机,可以打电话、发短信、玩游戏,

//打电话可以视频通话,发短信,可以发多媒体信息;

//因为新的手机也是手机,和手机类具有是的关系;同时新的手机也具有手机号的属性;

//所以为了简化代码,并且描述二者的是的关系,应该让新的手机继承旧的手机类

//创建一个新的手机对象

NewPhonenp=newNewPhone("18688888888");

np.call("18888888888");

np.sendMsg("18888888888","刚才给你打电话啦");

}

}