zoukankan      html  css  js  c++  java
  • 接口实现多态的原理

    接口中的方法都是什么样子的呢?

    public interface ImageSave {
        //接口中的方法可以有返回值类型
        //接口里的方法中可以有参数
        String getName();
        //String getType(String Type);
        void save();
        //void saveDouble(String Type,long kb);
    
    }
    public class GIFSaver implements ImageSave{
    
        @Override
        public String getName() {        
            return "GIF";
        }
    
        @Override
        public void save() {
            System.out.println("将图片保存成GIF格式");
        }
    
    }
    public class JPEGSaver implements ImageSave{
    
        @Override
        public String getName() {
            return "JPEG";
        }
    
        @Override
        public void save() {
            System.out.println("将图片保存成JPEG格式");
            
        }
    
    }
    public class PNGSaver implements ImageSave{
    
        @Override
        public String getName() {
            return "PNG";
        }
    
        @Override
        public void save() {
            System.out.println("将图片保存成PNG格式");
            
        }
    
    }
    public class ImageTypeChooser {
    
        public static ImageSave getSaver(String type){
            if(type.equalsIgnoreCase("GIF")){
                return new GIFSaver();
            }else if(type.equalsIgnoreCase("JPEG")){
                return new JPEGSaver();
            }else if(type.equalsIgnoreCase("PNG")){
                return new PNGSaver();
            }else{
                return null;
            }
            
            
            
        }
        
    }

    实现类赋予接口其实还是面向对象思想在起作用,客户是对厨师下命令的,厨师来做不同的菜,接口延伸到的是厨师,厨师来做菜

    public class User {
    
        public static void main(String[] args) {
            System.out.println("用户选择了GIF格式");
            ImageSave GIFSaver = ImageTypeChooser.getSaver("GIF");
            GIFSaver.save();
            
            System.out.println("用户选择了JPEG格式");
            ImageSave JPEGSaver = ImageTypeChooser.getSaver("JPEG");
            JPEGSaver.save();
            
            System.out.println("用户选择了PNG格式");
            ImageSave PNGSaver = ImageTypeChooser.getSaver("PNG");
            PNGSaver.save();
        }
    }

  • 相关阅读:
    jQuery 自执行函数
    IRelationalOperator空间关系接口简介
    9.2 空间拓扑运算[转]
    解决关于ArcGIS10.2服务手动启动的问题
    Multipart to single part feature
    Multipart polyline to single part lines
    VS2015 C#6.0 中的没有实现/支持的特性
    VS2015 C#6.0 中的那些新特性
    ArcGIS中各种合并要素(Union、Merge、Append、Dissolve)的异同点分析 转载
    FME2010 案例分析: 动态批量转换
  • 原文地址:https://www.cnblogs.com/lonely-buffoon/p/5573549.html
Copyright © 2011-2022 走看看