不知不觉开学要一个月了,虽然说Java的程序的编写还比较顺利,但是在面向对象的方面某人对我的批评实在是痛彻心扉,痛定思痛重翻PPT贯彻落实各个概念。
认识对象
计算机语言
程序设计语言本质上就是人与计算机的对话,双方通过高级程序设计语言互通有无。
因此程序应该包括两方面:
- 对数据的描述:在程序中指定数据的类型喝数据的组织形式,即数据结构;
- 对操作的描述:即操作步骤,也就是算法或者行为。
面向机器语言:用高低电压表示0和1,计算机使用二进制数存储和处理信息,层次很低,程序员需要考虑大量的机器细节。
面向过程语言:若干个过程或函数模块,每个模块的目标就是完成一个任务。
面向对象语言:从现实世界中客观存在的事物出发来构造软件系统,并在系统的构造中尽可能运用人类的自然思维方式。
面向对象开发范例
使用应用程序模拟现实世界:
- 首先对现实世界建立对象模型,类是对象共性的描述,包括属性和行为;
- 抽象出相应的类后,提取出其属性,并抽象出类相应的方法;
面向对象程序设计
我们说了这么多,将对象比作是汽车,类就是汽车的设计图纸,面向对象程序设计的重点在于类的设计,而不是对象的设计。
面向对象的思维:
- 明确问题域,分析这个问题里面有哪些类和对象;
- 分析这些类和对象应该具有哪些属性和方法;
- 分析类和类之间具体有什么关系。
面向对象的重点在于三个特性的理解:封装(将数据和数据的操作封装在一起)、继承和多态(操作名称的多态,即方法的重载;同一个操作被不同对象调用时可能产生不同的行为)。
封装数据为类
属性:对象具有的各种特征;
方法:对象执行的操作;
类是模子,确定对象将会拥有的特征(属性)和行为(方法),类是对象的类型。
从对象抽象出类:有两个方面,一方面是他的静态属性,另一方面是它的动态属性,反映到Java中就一方面是成员变量,另一方面是方法,因此类是一种抽象的复合数据类型。
小结:需求中提取类,创建一个类就是创建一个新的数据类型,实例化一个类,就得到一个对象。类的构成有两部分,分别是成员变量和成员方法。
类的设计原则:
- 取有意义的名字;
- 尽量将数据设计为私有属性;
- 尽量对变量进行初始化;
- 类的功能尽量单一。
Java允许在一个Java源文件中编写多个类,但其中的多个类至多只能有一个类使用public修饰。
成员变量修饰符主要有四种:static、public、private、protected。
方法的重载:一个类中可以定义有相同的名字, 但参数不同的多个方法,调用时会根据不同的参 数表选择对应的方法。
小结:
对象是程序所处理数据的最主要的载体,数据以实例变量的形式存放在对象中。每个对象在生命周期的开始阶段,Java虚拟机都需要为它分配内存,然后对它的实例变量进行初始化。
对象构造顺序:用new语句创建类的对象时,Java虚拟机会从最上层的父类开始,依次执行各个父类以及当前类的构造方法,从而保证来自于对象本身以及从父类中继承的实例变量都被正确地初始化。
- 程序运行时的内存占用无序列表
static修饰的变量可以在空间中只有一份,并且不与class object绑在一起。用static修饰的属性(变量)称为静态属性, 又叫类变量;用static修饰的方法称为静态方法,又叫类方法(静态方法里,无this)。
静态方法与非静态方法的区别:
- 两者本质上的区别是:静态方法是在类中使用staitc修饰的方法,在类定义的时候已经被装载和分配。而非静态方法是不加static关键字的方法,在类定义时没有占用内存,只有在类被实例化成对象时,对象调用该方法才被分配内存。
- 静态方法中只能直接调用静态成员或者方法,不能调用非静态方法或者非静态成员,而非静态方法既可以调用静态成员或者方法又可以调用其他的非静态成员或者方法。