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