面向对象编程心得

1、类之间的关系可以分为:关联、聚集、包容、继承。它们都是用来模拟现实生活中各个对象之间的关系的。

2、包容:即一个对象由另一个对象所专有。前者我们可以用内部类来模拟。

3、对于某些可能发生的运行时异常,比如:因找不到url所对应的文件而不知道返回什么等等情况,我们应该对 涉及到的方法(可能抛出异常) 或者是 用到的可能导致异常抛出的数据域   通过方法形式的封装来进行封装,并try-catch异常,以图安全。

4、在java中,斜杠/不需转义即可使用,而反斜杠\需转义才能被用于输出(例:"\\"字符串用于输出\)。在windows中绝对路径用反斜杠\,用在url字符串中则须转义。而Unix中用的是斜杠/,无需在url字符串中转义。网址用的是斜杠/。

5、设计类时应该提供多种 使用方式(即所需参数不同的方法),而且应该考虑类的可复用性以及可扩展性。

6、使用静态方法的一大好处就是:调用方法时可以直接通过类来调用,而不需通过对象引用来调用。而且当你的方法是public static的时候,其它包里的类也可以很方便地来调用它。

7、静态初始化模块在类载入时就会被调用,而实力初始化模块则是在实例创建时被调用。

具体流程如下:

(1)首先,JVM试图载入某个类。当该类被载入时应该先调用其静态初始化模块,但是,如果它有父类,则应该先载入父类,同理,此时须先调用父类的静态初始化模块,以此类推,直至最高父类。

(2)其次,如果该类中有需要初始化的数据域,则应将其初始化,顺序是先静态,后实例,而如果其中涉及对象初始化,则需要对类(之前未载入的)进行载入,并且对构造方法进行调用,对构造方法的调用应遵循(3)。

(3)调用构造方法时,应该先调用其实例初始化模块,但是,如果其有父类,则应该先调用父类的构造方法,以此类推,直至创建最高父类实例。

(4)在(2)之后,如果application运行时需要调用某方法,其中涉及实例构造,则须遵循(1)、(2)、(3)。

(5)运行一个application,JVM会从载入主类开始,该过程须遵行以上(1)、(2)、(3)、(4),而在载入之后,则是对主类数据域的初始化,同样须遵行以上各点,在数据域初始化之后,才是调用main method,同样需遵行以上各点。

8、类的成员包括数据域、方法、内部类、被聚集的类的对象等等,如果是类的成员方法,那么它在本类内被调用时,可以直接调用,不需要通过某个类或者是对象引用。

9、在try-catch前,须先确保 诸 即将被检测的变量,如stmt、conn、pstmt等!=null,否则会引发更多问题。

10、将变量定义在方法内,还是方法外,需要多加考量。我觉得 对这个问题的正确处理,就如同一门艺术。

11、今天下午有点儿累,不过还是得写写更新,国庆假期过得有点郁闷,具体的原因就不说了。下面写写最近的一点收获,一直以为 面向对象编程 是比 面向过程编程 要好用得多的,可是最近发觉不是这样。不错,面向对象编程可以很好地帮助你 描述现实生活中的问题,处理好 从问题空间到解空间的平滑过渡 ,但是,我发现,这不过是可以帮助你提高描述问题的能力而已,或者更具体的说,就是不过是给你要设计的软件提供一层更好看、更方便处理、结构更合理的外壳而已,而到了软件的内部,即那些真正核心的地方,都是充斥着 各种这样的算法、编程技巧、数据设计等等,这些都是 面向过程 的东西,面向对象编程并不能帮你解决这类问题。所以,学好面向过程的编程具有非常重要的意义,它能帮你编写出更高效的软件,而面向对象编程可以帮你改善软件体系结构。或者可以这么说,二者着重的层次不同,一个稍微偏向底层,一个则偏向高层,二者各有所长,互为补充,只有结合起来使用,才能发挥它们最大的功效。

12、在java 中,如果对一个方法所传入的参数(比如是一个对象)进行赋值(即赋一个引用给它),那么,这种情况应视为值传递,即方法体结束后,该引用会失效,即在方法内赋给参数的对象会消失,而如果该对象并非在该方法内生成的,而是由另一个方法传来的,那么,在那个方法结束后,该引用就会消失。

对于这种情况,反映到异常上,即nullPointerException。

但是,一旦是在方法内返回一个对象(即引用),那么这个对象的生命周期将视其使用情况而定,只要还被使用,就不会被销毁,这一点很关键,工厂模式便是利用了这一点。

上面我所谈到的区别,应该引起大家的重视!

后来我又仔细研究了一下,得出如下结论:

(1)、对传进来的参数(假设为引用变量)赋引用而言:在方法内还行,一出来就丢失引用了。证明无法通过给参数赋值的方式来给变量成功赋引用。

(2)、但是,却可以在方法内给类变量、实例变量赋引用,而且对象引用并不会随着方法结束而丢失。

(3)、另外,对于return回来的对象(即引用),并不会随着 return它的方法 结束 而丢失。

(4)最后一点,令人比较费解的是,对于(1),如果是对参数(即某个对象引用)的属性(假设为一个对象变量),进行引用赋值,居然能使其属性(即那个对象变量)所被赋得的对象被保留下来,即使方法结束了!!!???这一点是自己测试出来的结果,本人也很困惑。

13、在java gui编程,比如swing、awt中,利用jframe生成窗体有“关闭”按钮,一旦点击它,视为销毁相应的gui对象,而如果该对象还有父对象(即该对象是在父对象中生成的),那么,相应的,父对象也会被销毁。而在gui编程中,在一个对象中生成多个子对象(即组件),这是很平常的事。

这一点,有必要引起大家重视!对于这种情况,我们习惯于将“关闭”设为do_nothing,然后在界面中新增一个返回按钮。

14、GUI编程提示:

该用jdialog时就用,不要什么都用jframe,否则会产生不必要的问题。

无论是jdialog也好,jframe也好,最好把defaultCloseOperation设为do_nothing。

jdialog的modal要置为true。

无限更新中……

你可能感兴趣的:(总结,对象,继承,面向对象编程,java)