JAVA基础入门——面向对象

面向对象(Object Oriented,OO)

You know Object Oriented Principles,right?

万物皆对象
对象这个词你可以理解为一个总称,房子是对象、桌子是对象、男朋友是对象、朴灿烈也是对象,并且对象具有唯一性:你的是属于你的,但不是属于我的。那么一个房子里都有啥呢,可能有电脑,桌子,椅子……现在这些“包含”在房子里的东西就不是东西了,而是叫做“属性”……
对象、属性都有了,剩下就是方法了。意思就是你想要得到某种结果,就需要用特定的方法比如你女朋友生气了要哄吧,不高兴了要逗她开心吧,“哄”和“逗”这些就是让女朋友死心塌地的方法……诸如此类,发现一个女生要用“追”这个方法,和女朋友逛街上碰到美女要用“偷看”这个方法,恋爱都要用“谈”这个方法……
——对象就是一个概念,把所有的事物都称作为“对象”(没有不是对象的东西)——属性就是该事物的组成部分,所有可以被包含的部分都称为“属性”(没有不含属性的对象)——方法就是达成目标的途径,所有可行性的行为都成为方法(没有不存在方法的对象和属性,但是可以选择使用哪些方法)


面向对象的编程到现在就是:对象其实是一个由成员变量组合起来,用于临时存一些数据的一个东西,我们通过调用对象的方法去使用这些数据,这样做的目的一般来说有两个:一是修改了成员变量的值,二是返回一些数据,一般来说,方法都是单功能的,而方法里面的数据来源于三个地方:第一个地方是方法的形参,第二个就是对象的成员变量,第三个就是系统的一些数据,或者是静态的全局变量。通过这样的方法,就能完成一些操作。即使是不知道对象里面的源码,知道这个方法是做什么的就行。

1,对象是有一些数据的东西

2,调用对象使用或者修改这些数据,或者返回一个你需要的东西,往往方法都是单功能的便于修改和维护。

关于java的编程,有了new出来的对象就应该有相应的垃圾回收机制。但是可能对于空间复杂度而言可能不好控制。

在讲面向对象三大特征之前让我们先来了解一些细枝末节的东西。

类与对象

(一)类:类是对对象的一种抽象描述,也就是说,类其实就是定义对象的一个模板,在这个模板里面充分描述了对象所具有的属性和行为(方法)

(二)对象:通过类具体创建出来的实体,对象是实际存在的该类事物的每个个体,因而也称实例(instance),一个类可以创建出任意个相同的对象(也就是一对多关系)

(三)类中操作的实现过程叫做方法,一个方法有方法名、返回值、参数、方法体。

所以,在编写代码时,必须先编写类(Class),然后通过这个Class来创建对象,创建对象使用new关键字

例如:People p = new People();

JVM的内存分配

JVM在运行时将内存分为三大块:
1).栈
栈是遵循先进后出的原则(先入栈的变量最后才出栈)。
局部变量都是在栈中分配的,如果变量是基本数据类型,那么这个变量的值一并存放在栈中。如果是引用数据类型,那么在栈中存放的只是一个引用地址,这个地址是指向堆中的对象首地址。
 
2).堆
只要通过new关键字创建出来的对象,都会分配到堆中,每个对象在堆中都会有一个唯一的地址,这个地址可以被栈中的变量所引用。
堆中的对象通常存放实例变量,实例变量是随着对象的创建而创建,也随着对象的销毁而销毁,每个实例都有自己的实例变量,他们之间是互不影响的,不会产生共享。
(注意:在参数传递的过程中,如果参数的类型是基本数据类型,那么传递过去的就是基本数据类型的值,如果参数的类型是引用数据类型,那么传递过去的是一个引用地址的值,这个引用地址同样是指向堆中的同一个对象)
关于垃圾货收:当堆中的任何一个对象没有引用指向它的时候,这个对象就被视为垃圾对象,JVM会在定期去自动回收它,并释放内存。
 
3).方法区
方法区中通常用于存放类加载的class信息(字段信息,方法信息,类的信息,接口信息,还包括静态变量,以及常量等等)当这些信息加载到方法区后,jvm就会根据这些信息构建一个Class对象

统一建模语言

Unified Modeling Language (UML)又称统一建模语言或标准建模语言.

UML规范用来描述建模的概念有,类(对象的)、对象、关联、职责、行为、接口、用例、包、顺序、协作,以及状态。

JAVA基础入门——面向对象_第1张图片

UML从考虑系统的不同角度出发,定义了用例图、类图、对象图、状态图、活动图、序列图、协作图、构件图、部署图等9种图。这些图从不同的侧面对系统进行描述。系统模型将这些不同的侧面综合成一致的整体,便于系统的分析和构造。

 

用例图主要用来描述 用户、需求、系统功能单元 之间的关系。它展示了一个外部用户能够观察到的系统功能模型图。

【用途】:帮助开发团队以一种可视化的方式理解系统的功能需求。

类图显示了一组类、接口、协作以及他们之间的关系。在UML中问题域最终要被逐步转化,通过类来建模,通过编程语言构建这些类从而实现系统。类加上他们之间的关系就构成了类图,类图中还可以包含接口、包等元素,也可以包括对象、链等实例。

对象图(Object Diagram) 是显示了一组对象和他们之间的关系。使用对象图来说明数据结构,类图中的类或组件等的实例的静态快照。对象图和类图一样反映系统的静态过程,但它是从实际的或原型化的情景来表达的。

对象图显示某时刻对象和对象之间的关系。一个对象图可看成一个类图的特殊用例,实例和类可在其中显示。对象也和合作图相联系,合作图显示处于语境中的对象原型(类元角色)。

对象图是类图的实例,几乎使用与类图完全相同的标识。他们的不同点在于对象图显示类的多个对象实例,而不是实际的类。一个对象图是类图的一个实例。由于对象存在生命周期,因此对象图只能在系统某一时间段存在。

面向对象的几大基本:

基本原则:高内聚、低耦合

对象内部是高内聚的:对象只负责一项特定的职能,所有与对象相关的内容都封装到对象内部(以属性和方法的形式存在) 
对象对外是低耦合的:外部世界只可以看到对象的一些属性,只可以看到对象做某些事情而不是全部事情。 

基本特性:封装、继承和多态
 

你可能感兴趣的:(JAVA基础)