(一)java中的oop思想的由来
机器语言-直接有计算机的指令组成,指令、数据、地址都已“0”和“1”组成:可以被计算机直接执行。
汇编语言-用容易理解和记忆的符号表示指令、数据以及寄存器等,抽象层次低,程序员需要考虑大量的机器细节。
高级语言-接军人类的自然语言,提出了结构化数据和语句,为面向数据和过程抽象的。
面向对象-抽象成了现实的事物。
(二)OOP的设计思想
从上图中我们可以看到:OOP的设计思想是:有哪些类?这些类有哪些方法?这些类有哪些属性?类和类之间有什么关系?
1、类
Java本身底层文件中给我们提供的类,有核心类,就是我们经常用的;有网络的类可以通过TCP和UDP协议实现通话;有IO类,就是数据流实现对文件的读写等;工具类,有窗体工具,可以生成Java的窗体和组件等,有使用工具,有容器等。要想使用这些类,要引用,因为Java中除了8大基本数据类型不需要引用只为,其他的对象使用的时候,都需要先引用。
2、方法(动态属性)
Java中有所有我们需要的Java类及其方法,一名优秀的程序员,要学会用这个api文件。当然视频中马士兵老师用构造方法讲解了方法,从特殊到一般,构造方法与类同名,一个类中可以有很多个构造方法,方法的区别在于:参数的个数;参数的类型不同。构造函数在实例化的时候被调用的。
内存分析:
我们主要分析的是第三步:执行过程中的,
(1)、heap为栈,new 出来的东西,都放在这里、返回值暂时性的放在这里、局部变量名称放在这里等;
(2)、Stack为堆,局部变量的值放在这里,new出来的形参放在这里等。
当所在函数执行结束,所有的数据就会被释放。
(3)、Data Segment 是存放静态变量的,就是用static声明的变量,不需要对实例化,就可以直接类名+变量名就可以访问到的。
(4)、code segment 存放代码的。
(5)、this的内存分析
3、属性(静态属性)
这里注意一下static声明的属性就可以了。
4、类之间的关系
这些关系,我们在UML中就讨论过了的,在设计模式中主要要注意必须会这些关系在代码中是怎样实现的。
5、原则
这里在继承中有两个区别:
(1)、接口和抽象类的区别:继承接口的,要实现接口中的所有方法,二继承抽象类的,不用实现所有方法;一个类可以实现继承多个接口,但只能继承一个抽象类。
(2)、重载和重写:很简单:
重载就是在类中可以创建多个方法,他们具有不同的参数表(参数类型和个数),但名字相同,是一种类的多态性的表现。
重写:是父类和子类之间的多态性,子类继承父类中的方法,而不需要从新编写,简单地说是覆盖,子类与父类有相同的方法名、返回类型、参数表。
注意一下就行了。
(三)总结
个人觉得马士兵老师讲的OOP改变了很多以前自以为是的想法,老师说的那句话:你们所做的new出对象,对象.方法,调出来后就用,是完完全全面向过程的思想,而大师级的程序员是考虑有哪些类,这些类中有哪些方法,有哪些属性,类与类之间有什么关系,这才是面向对象的思想。