在Java编程中,什么时候该使用覆盖函数操作呢,很多人都知道有覆盖操作,但是到底什么时候该使用覆盖操作,还是有一些模糊的感觉,以下就举例来用代码分析就明白了, 举例生活中的案例,模拟制造手机的公司;


公司最早生产的第一台手机 01版本,只具备显示电话号码功能

package com.oop;

/**
 * Java什么时候该使用覆盖操作
 * @author Liudeli
 *
 */

/**
 * 公司最早生产的第一台手机 01版本,只具备显示电话号码功能
 * @author Liudeli
 *
 */
class Phone01 {

    /**
     * 拨打电话操作(显示电话号码)
     */
    public void call() {
        System.out.println("电话号码:13887986585");
    }
}

/**
 * 测试端程序
 * @author Liudeli
 *
 */
public class Demo5 {

    /**
     * 测试程序
     * @param args
     */
    public static void main(String[] args) {
        // 拿到一台手机
        Phone01 phone1 = new Phone01();
        // 操作手机
        phone1.call();
    }

}

运行结果:
这里写图片描述



由于公司研发的不断努力,推出了Phone02升级版本,此版本具备显示姓名,电话号码功能;

package com.oop;

/**
 * Java什么时候该使用覆盖操作
 * @author Liudeli
 *
 */

/**
 * 公司最早生产的第一台手机 01版本,只具备显示电话号码功能
 * @author Liudeli
 *
 */
class Phone01 {

    /**
     * 拨打电话操作(显示电话号码)
     */
    public void call() {
        System.out.println("电话号码:13887986585");
    }
}

/**
 * 推出了Phone02升级版本,此版本具备显示姓名,电话号码功能
 * @author Liudeli
 *
 */
class Phone02 extends Phone01 { // 为什么要继承Phone01呢,因为Phone02是在Phone01的基础上研发出来的

    /**
     * 拨打电话操作(显示电话号码,显示姓名)
     */
    public void call() {
        System.out.println("姓名:刘德刘,电话号码:13887986585");
    }

}

/**
 * 测试端程序
 * @author Liudeli
 *
 */
public class Demo5 {

    /**
     * 测试程序
     * @param args
     */
    public static void main(String[] args) {
        // 拿到一台手机
        Phone01 phone = new Phone02();
        // 操作手机
        phone.call();
    }

}

运行结果:
这里写图片描述



由于公司研发人员的不断加班加点,在年尾期间,推出了Phone10升级版本,此版本具备显示姓名,电话号码,显示大头贴功能;

package com.oop;

/**
 * Java什么时候该使用覆盖操作
 * @author Liudeli
 *
 */

/**
 * 公司最早生产的第一台手机 01版本,只具备显示电话号码功能
 * @author Liudeli
 *
 */
class Phone01 {

    /**
     * 拨打电话操作(显示电话号码)
     */
    public void call() {
        System.out.println("电话号码:13887986585");
    }
}

/**
 * 推出了Phone02升级版本,此版本具备显示姓名,电话号码功能
 * @author Liudeli
 *
 */
class Phone02 extends Phone01 { // 为什么要继承Phone01呢,因为Phone02是在Phone01的基础上研发出来的

    /**
     * 拨打电话操作(显示电话号码,显示姓名)
     */
    public void call() {
        System.out.println("姓名:刘德刘,电话号码:13887986585");
    }

}

/**
 * 推出了Phone10升级版本,此版本具备显示姓名,电话号码,大头贴显示功能
 * @author Liudeli
 *
 */
class Phone10 extends Phone02 { // 为什么要继承Phone02呢,因为Phone10是在Phone02的基础上研发出来的

    /**
     * 拨打电话操作(显示电话号码,显示姓名,显示大头贴)
     */
    public void call() {
        System.out.println("姓名:刘德刘,电话号码:13887986585,显示了帅气的大头贴照片...");
    }

}


/**
 * 测试端程序
 * @author Liudeli
 *
 */
public class Demo5 {

    /**
     * 测试程序
     * @param args
     */
    public static void main(String[] args) {
        // 拿到一台手机
        Phone01 phone = new Phone10();
        // 操作手机
        phone.call();
    }

}

运行结果:
这里写图片描述


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006