zoukankan      html  css  js  c++  java
  • 【c#笔记】c#与java的差异:接口定义实现

    ===============================================

     2021/4/1_第1次修改                       ccb_warlock

     

    ===============================================

    本周在整理公司代码中,发现原来java接口的隐式实现与c#并不一样,故这里进行试验的记录。

     


    c#

    1.显示定义接口实现

    c#中通过“:”来显示定义某个类是接口的实现。

    public interface IFileService
    {
        void saveFile(Stream stream);
    }
    public class FileServiceImpl : IFileService
    {
        public void saveFile(Steam stream)
        {
            // todo
        }
    }

    java

    1.显示定义接口实现

    java中通过“implements”来显示定义某个类是接口的实现。

    public interface IFileService {
        void saveFile(MultipartFile file);
    }
    public class FileServiceImpl implements IFileService {
    
        public void saveFile(MultipartFile file){
            // todo
        }
    }

    2.隐式定义接口实现

    java中还支持在调用接口的时候匿名定义接口实现

    @Data
    public class User{
        private String name;
    
        private String displayName;
    }
    public interface UserCall {
        void call(User user, String name);
    }
    public void updateUser(User user, UserCall p){
        System.out.println("1");
        p.call(user, user.getName());
        System.out.println("3");
    }
    updateUser(user1, (u, name) -> {
        u.setDisplayName(name);
        System.out.println("displayName: " + u.getDisplayName());
    });

    控制台输出如下:

    总结:

    关于java支持匿名定义接口实现,应用的时候感觉比c#更灵活,不过具体的使用还得根据场景来,我目前还是倾向于尽量使用显示定义接口。

     

     

  • 相关阅读:
    [OC Foundation框架
    [OC Foundation框架
    static修饰的方法不能被重写可以被继承
    数据结构-数组的各种排序算法
    java的string和==和equals和hashcode简单理解
    JAVA 中的 StringBuilder 和 StringBuffer 适用的场景是什么?
    Java 中 this 和 super 的用法总结
    Java的内部类
    long int double float
    sonarLint和sonarQube
  • 原文地址:https://www.cnblogs.com/straycats/p/14608751.html
Copyright © 2011-2022 走看看