【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#更灵活,不过具体的使用还得根据场景来,我目前还是倾向于尽量使用显示定义接口。

 

 

原文地址:https://www.cnblogs.com/straycats/p/14608751.html