在程序中为什么要用抽象类和接口?? 从系统架构的角度讲它们确实有一定的作用,但是也增加了参数的传递次数是不是导致性能的低下?小弟刚刚开始接触设计模式,对这个问题有写困惑,望各位高手帮忙解惑~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 JAVA是支持动态绑定的语言,简单的说,就是在运行时才知道真正的类型。比如我们有一个接口A,他有很多的实现类,在我们的某个方法中的参数就是A,那么在编译这个类时,我们是不知道我们要用到的是A的哪个实现,只有在运行时才知道。这可是很不错的功能啊,你正在看设计模式,那么你看工厂模式了吗?基本上都是声明一个接口,由工厂去创建接口的一个实现。再比如Spring的DI(依赖注入):我们在程序中只声明一个接口,运用setter注入或构造子注入,我们只对接口编程。具体的实现是由Spring注入进来。比如客户说我要用JDBC连接数据库,过了几个月又说用Hibernate做持久层。那我们是不是要老去改我们的代码呢???不用,我们在程序中只声明一个接口啊,实现类是Spring注入进来的(通过配置文件)。今天你说用JDBC,那么我在配置文件中给你配置一个JDBC的实现(实现了前面说的那个接口),几个月后你又说用Hibernate,那么我在配置文件中给你配置一个Hibernate的实现(还是那个接口).这就是“松耦合”——开闭原则(对扩展开放,对修改封闭)但是动态绑定确实和静态绑定比要慢一些(C语言),但是也带来了很多的好处,有得有失。至于抽象类,我感觉尽量少用,除非你确定父类和子类是“is a ”的关系,而不是“has a"的关系,而且你也丢失了唯一的一次继承机会。尽量用组合(创建对象的方式)而非继承. 中文字符串转unicode很奇怪问题(急) 怎么在excel里生成多个sheet. 一个公司面试题的算法 线程的基本概念、线程的基本状态以及状态之间的关系 什么是类型安全 可以实现吗:如果子类中的某个方法没有调用父类的同名方法,编译时提示出错 关于JAVA SWING方面的问题~ JAVA poi如何将excel处理好的数据回写到原来的excel中 ▲▲▲ 有个"矩阵加括号"的通用程序,如何把它改得更好!!! 大家帮我找一个错误好吗? 很基础 但很麻烦的问题! 还是那个打包成可执行jar问题
但是动态绑定确实和静态绑定比要慢一些(C语言),但是也带来了很多的好处,有得有失。
至于抽象类,我感觉尽量少用,除非你确定父类和子类是“is a ”的关系,而不是“has a"的关系,而且你也丢失了唯一的一次继承机会。尽量用组合(创建对象的方式)而非继承.