软件构造课--感想Lab2 (对于基础ADT结构的理解)

谈到Java编程那就不得不提及其中的抽象数据类型,以及面向对象编程。本次的实验而当中便是对这方面的学习进行的巩固。

以下部分内容来自菜鸟教程:

  • 对象:对象是类的一个实例(对象不是找个女朋友),有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
  • :类是一个模板,它描述一类对象的行为和状态。

软件构造课--感想Lab2 (对于基础ADT结构的理解)

可以说万物都是一种对象,对象有他的状态以及特定的一些属性、技能。

类的实例化可生成对象,一个对象的生命周期包括三个阶段:生成、使用、消除。当不存在对一个对象的引用时,该对象成为一个无用对象。Java的垃圾收集器自动扫描对象的动态内存区,把没有引用的对象作为垃圾收集起来并释放。当系统内存用尽或调用System.gc( )要求垃圾回收时,垃圾回收线程与系统同步运行。(Java语言规范没有明确地说明JVM使用哪种垃圾回收算法,但是任何一种垃圾回收算法一般要做2件基本的事情:(1)找到所有存活对象;(2)回收被无用对象占用的内存空间,使该空间可被程序再次使用。之后有空再去研究一下回收机制

我觉得面向对象编程最重要的一部分在于封装,你的封装使得你的逻辑更加严密。

封装性就是尽可能的隐藏对象内部细节,对外形成一道边界,只保留有限的接口和方法与外界进行交互。封装的原则是使对象以外的部分不能随意的访问和操作对象的内部属性,从而避免了外界对对象内部属性的破坏。可以通过对类的成员设置一定的访问权限,实现类中成员的信息隐藏。

这里就不得不再说一下老生常谈的private、default、protected和public

  • private:类中限定为private的成员,只能被这个类本身访问。如果一个类的构造方法声明为private,则其它类不能生成该类的一个实例。
  • default:类中不加任何访问权限限定的成员属于缺省的(default)访问状态,可以被这个类本身和同一个包中的类所访问。
  • protected:类中限定为protected的成员,可以被这个类本身、它的子类(包括同一个包中以及不同包中的子类)和同一个包中的所有其他的类访问。
  • public:类中限定为public的成员,可以被所有的类访问。

借用一张图(软件构造课--感想Lab2 (对于基础ADT结构的理解)软件构造课--感想Lab2 (对于基础ADT结构的理解)

面向对象还有其余两种特性是:

继承的特性:子类拥有父类非private的属性,方法。

多态:多态一般都要跟继承结合起来说,其本质是子类通过覆盖或重载

最后借用知乎上看到的一句话作为总结:

如果你的思维方式是:我先做什么,再做什么……这叫面向过程;

如果思维方式是:我先做一个什么东西来做这件事,再做一个什么东西来做那件事,然后它们怎么相互配合……这叫面向对象。

面向过程更像是我们一开始接触编程,只是为了实现某个功能。而现在我们应该做的是多考虑面向对象,这样才有利于程序的可扩展性。