• Java面向接口编程【精品博客】


    我们从生活中去理解面向接口编程,以下举例四个案例来理解:


    案例一(汽车案例):

    /**
     * 汽车标准接口
     * @author Liudeli
     */
    public interface ICar {
    
        /**
         * 打印出汽车的拍照颜色即可
         */
        public void car();
    
    }
    /**
     * 奥迪车对象
     * @author Liudeli
     */
    public class Audi implements ICar {
    
        public void car() {
            // TODO Auto-generated method stub
            System.out.println("奥迪A3 红色...");
        }
    
    }
    /**
     * 奔驰车对象
     * @author Liudeli
     */
    public class Benz implements ICar {
    
        public void car() {
            // TODO Auto-generated method stub
            System.out.println("奔驰A1 白色...");
        }
    
    }
    
    /**
     * 宝马车对象
     * @author Liudeli
     */
    public class BMW implements ICar {
    
        public void car() {
            // TODO Auto-generated method stub
            System.out.println("宝马A6 黑色...");
        }
    
    }
    /**
     * 汽车专卖店
     * @author Liudeli
     */
    public class CarMonopoly {
    
        /**
         * 打印汽车名和颜色
         * @param car 传入接口(可以达到父类的引用指向子类的对象)
         */
        public void print(ICar car) {
            car.car();
        }
    
    }
    /**
     * 测试程序
     * @author Liudeli
     */
    public class Main {
    
        public static void main(String [] args) {
            // 获取汽车专卖店
            CarMonopoly carMonopoly = new CarMonopoly();
    
            carMonopoly.print(new Audi());
    
            carMonopoly.print(new Benz());
    
            carMonopoly.print(new BMW());
        }
    
    }

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


    案例二(动物案例):

    /**
     * 定义动物接口
     * @author Liudeli
     */
    public interface IAnimal {
    
        /**
         * 定义动物叫的行为
         */
        public void call();
    
    }
    /**
     * 定义猫对象
     * @author Liudeli
     */
    public class Cat implements IAnimal {
    
        public void call() {
            System.out.println("喵喵喵...");
        }
    
    }
    /**
     * 定义狗对象
     * @author Liudeli
     */
    public class Dog implements IAnimal {
    
        public void call() {
            System.out.println("汪汪汪...");
        }
    
    }
    
    /**
     * 定义鹅对象
     * @author Liudeli
     */
    public class Goose implements IAnimal{
    
        public void call() {
            System.out.println("鹅鹅鹅...");
        }
    
    }
    
    /**
     * 此类为动物管理类
     * @author Liudeli
     */
    public class AnimalManager {
    
        /**
         * 执行叫的行为
         * @param animal 传入动物接口(父类的引用指向子类的对象)
         */
        public void call(IAnimal animal) {
            animal.call();
        }
    
    }
    /**
     * 测试程序
     * @author Liudeli
     */
    public class Main {
    
        public static void main(String[] args) {
    
            AnimalManager animalManager = new AnimalManager();
    
            animalManager.call(new Dog());
    
            animalManager.call(new Goose());
    
            animalManager.call(new Cat());
        }
    
    }
    

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


    案例三(城市案例):

    /**
     * 定义城市的接口
     * @author Liudeli
     *
     */
    public interface ICity {
    
        /**
         * 显示当前城市,显示城市特点
         */
        public void city();
    
    }
    
    /**
     * 定义北京对象
     * @author Liudeli
     *
     */
    public class Beijing implements ICity {
    
        public void city() {
            // TODO Auto-generated method stub
            System.out.println("北京雾霾很严重...");
        }
    
    }
    /**
     * 定义上海对象
     * @author Liudeli
     *
     */
    public class Shanghai implements ICity {
    
        public void city() {
            // TODO Auto-generated method stub
            System.out.println("上海很豪华...");
        }
    
    }
    /**
     * 定义深圳对象
     * @author Liudeli
     *
     */
    public class Shenzhen implements ICity {
    
        public void city() {
            // TODO Auto-generated method stub
            System.out.println("深圳天气晴空万里...");
        }
    
    }
    /**
     * 此类为显示城市管理类
     * @author Liudeli
     *
     */
    public class ShowCity {
    
        /**
         * 初始化单例模式
         */
        private static ShowCity showCity = null;
    
        public static ShowCity getInstance() {
            if (null == showCity) {
                synchronized (ShowCity.class) {
                    showCity = new ShowCity();
                }
            }
            return showCity;
        }
    
        /**
         * 显示城市
         * @param city 传入城市接口(父类的引用指向子类的对象)
         */
        public void show(ICity city) {
            city.city();
        }
    
    }
    /**
     * 测试程序
     * @author Liudeli
     *
     */
    public class Main {
    
        public static void main(String[] args) {
    
            ShowCity instance = ShowCity.getInstance();
    
            instance.show(new Shanghai());
    
            instance.show(new Beijing());
    
            instance.show(new Shenzhen());
    
        }
    
    }

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




    案例四(PCI案例):

    这里写图片描述

    这里写图片描述

    目前自认为这是我写的比较通俗易懂,体现出面向接口编程意义的案例:

    /**
     * 电脑主板里面有插槽(插槽就是PCI)
     * 注意:这些插槽是一种标准,
     *      支持声卡,网卡,显卡...
     * @author Liudeli
     *
     */
    public interface PCI {
    
        /**
         * 插入状态
         */
        public void insert();
    
        /**
         * 拔出状态
         */
        public void pull();
    
    }
    /**
     * 定义声卡对象
     * @author Liudeli
     *
     */
    public class SoundCard implements PCI {
    
        public void insert() {
            System.out.println("声卡已经插入成功了...");
        }
    
        public void pull() {
            System.out.println("声卡被人拔出去了...");
        }
    
    }
    /**
     * 定义网卡对象
     * @author Liudeli
     *
     */
    public class NetworkCard implements PCI {
    
        public void insert() {
            System.out.println("网卡已经插入成功...");
        }
    
        public void pull() {
            System.out.println("网卡已经被人拔出去了...");
        }
    
    }
    /**
     * 定义显卡对象
     * @author Liudeli
     *
     */
    public class Graphics implements PCI {
    
        public void insert() {
            System.out.println("显卡已经插入成功了...");
        }
    
        public void pull() {
            System.out.println("显卡被人给拔出去了...");
        }
    
    }
    /**
     * 电脑主板
     * @author Liudeli
     *
     */
    public class MainBoard {
    
        /**
         * 主板的卡槽
         * @param pci 插入支持标准卡槽的具体对象(父类的引用去指向子类的对象来调用具体实现)
         */
        public void cardSlot(PCI pci) {
            pci.insert();
            pci.pull();
        }
    
    }
    /**
     * 测试程序
     * @author Liudeli
     *
     */
    public class Main {
    
        public static void main(String[] args) {
    
            // 拿一块主板过来(我要自己组装台式机电脑)
            MainBoard mainBoard = new MainBoard();
    
            // 给主板插好声卡(安装好声卡才可以听歌)
            mainBoard.cardSlot(new SoundCard());
    
            // 给主板插好显卡(安装好的显卡可以玩游戏舒服)
            mainBoard.cardSlot(new Graphics());
    
            // 给主板插好网卡(安装好网卡才可以插入网线,才可以上网)
            mainBoard.cardSlot(new NetworkCard());
        }
    
    }

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


    Project结构图:
    这里写图片描述


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

  • 相关阅读:
    1143 Lowest Common Ancestor (30)
    PAT 1135 Is It A Red-Black Tree
    PAT 1119 Pre- and Post-order Traversals
    1102 Invert a Binary Tree(25 分)
    PAT总结
    c++ getline的用法
    PAT 1049 Counting Ones (30)
    PAT 1022 Digital Library (30)
    java jar包
    NIO的理解
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322206.html
Copyright © 2020-2023  润新知