Java编程小知识

 

  1. java接口中定义的变量在实现类中再次定义是被允许的,不会报变量定义过时的错误,奇怪?
  2. java的swing具有“封冻”的特点。具体不知道用途在哪里?
  3. 构造方法不会被继承,而父类却少了参数为空的构造方法时,子类是不能再建造参数为空的构造方法,原因就是创建子类时许依赖父类的默认构造方法。
  4. protected访问限制了只能是同目录下或它的子类是用,例如一个类的构造方法为protected,那么出了这个包外该对象实例是不能被创建的。
  5. 为提高性能而养成的一些编程习惯:

    (1)尽量使用final,尽量试try——catch足够的小,尽量不要用static修饰符,尽量使用基础类型代替包装类,尽量不要重复创建对象(推选使用缓存),尽量在单线程中使用Stringbuild、HashMap,尽量使用finanlly释放系统资源,先记到这里,后面继续添加。

  6. 面向对象编程的特点就是封装、继承、多态而我们往往忽略了这些特点,既然可以继承那我们就需要把尽可能多的共同点抽象到父类中,这样就有牵一发动全身的目的,只修改父类的代码结构就可以满足需求的改变,既然有多态,那我们可以让底层框架实现不同的行为,其实这些好处是相对的,继承是高耦合的,所以对于不同的场景可以考虑聚合或组合,其实根据不同的场景我们可以考虑的使用设计模式思想编程,而设计模式就是应对不同场景设计的一种最优解决方案以达到高内聚低耦合的代码。

  7. 迪米特法则:如果两个类不彼此直接通信,那么两个类就不应该直接的发生关系。如果一个类需要调用另一个类的方法的话,可以通过第三者转发这个调用。

  8. 如何区分接口和抽象类:抽象类是对事物共同属性和行为的一种抽象,abstract说明这个对象是什么东西,而接口定义的是一种公共接口,interface说明这个对象有哪些方法。有的人说abstract也能定义抽象公用的方法,其实我们在细想我刚才说的,如果是abstract定义的公用方法,那说明这些方法是那一种特定类型的公用方法,而interface定义的是不同类型具有的公共方法接口。哈哈,如果你还迷糊就再看个实例,如果对于动物有运动run()的这个方法接口,空气,水,世间一切都有运动的特性,这时‘老天爷’说地球诞生了,一切都运动起来吧!这时就不应该再用抽象类定义统一接口了,而用该用interface定义统一接口,因为‘老天爷’只需要调用实现了interface对象的run()方法,这时世间一切都可以运动了。不知道你理解清楚抽象和接口的区别没。

  9. 依赖倒转原则:传统的过程性系统设计倾向于使高层次的模块依赖于低层次的模块;抽象层次依赖于具体层次。依赖倒转原则就是要把这种依赖关系倒转。即抽象不应该依赖细节,细节应该依赖抽象。要针对接口编程,不要针对实现编程。高层模块不应该依赖低层模块,两个都应该依赖抽象。

  10. 对于异常的处理,我个人理解,在业务层或底层我们尽量对异常进行抛出,而对于应用层我们需要对异常进行捕获并进行合理的处理。因为应用层决定着出异常时应该怎么做,总之,当有异常时我们无法判断出异常时怎么做那我们就对异常进行抛出,不要干那些越俎代庖的事。

  11. 反射是将程序从编译时延迟到运行时,如果不存在这个类那么该框架依赖该类就无法通过编译,如果利用反射,那么就将依赖延迟到运行时。其次,通过反射读取字符串也是可以在文件中变更,方便易维护易扩展。

你可能感兴趣的:(java,编程,知识)