133-方法重新的概念及演示.-【视频讲解】

1.1. 方法重写(覆写overwrite)

点击查看视频讲解​​​​​​​

1.1.1. 方法重写的概念

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

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

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

举例:

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

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

表示老的手机:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

/**

 

 * Phone

 * 表示老的手机

 * @author 快学大数据

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

 */

public class Phone {

    private String num;//手机号

    public Phone() { }

    public Phone(String num) {

        this.num = num;

    }

    public String getNum() {

        return num;

    }

    public void setNum(String num) {

        this.num = num;

    }

    /**

     * 给别人打电话

     * @param targNum 目标手机号

     */

    public void call(String targNum) {

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

        }

        /**

         * 给别人发短信

         * @param targNum :收信人手机号

         * @param msg:发送的短信内容

         */

        public void sendMsg(String targNum,String msg) {

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

    }

}

 

表示新的手机:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

public class NewPhone extends Phone{

    public NewPhone() {}//无参构造函数

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

    public NewPhone(String num) {

        super(num);

    }

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

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

    /**

     * 给别人打电话

     * @param targNum 目标手机号

     */

    public void call(String targNum) {

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

    }

    /**

     * 给别人发短信

     * @param targNum :收信人手机号

     * @param msg:发送的短信内容

     */

    public void sendMsg(String targNum,String msg) {

        String num = getNum();

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

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

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

    }

}

测试类:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

public class Test {

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

    public static void main(String[] args) {

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

        Phone phone = new Phone("12345678912");

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

        phone.call("18888888888");

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

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

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

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

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

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

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

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

        NewPhone np = new NewPhone("18688888888");

        np.call("18888888888");

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

    }

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值