------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一、面向对象
1、定义:是软件开过过程中使用一种思维方式 。
1) 面向过程:强调功能行为,关注完成的过程
2) 面向对象:将功能封装进对象,强调具备了功能的对象,不关注过程
3) 面向对象与面向过程都是一种思想,但面向对象是基于面向过程的
2、特点:
1) 是一种更符合人们思考习惯的思想。
2) 可以将复杂的事情简单化。
3) 将程序由执行者转换成了指挥者。
3、面向对象完成需求:
1) 明确开发功能需求。
2) 查找具有该功能的类。
3) 如果不存在满足功能的类,则定义这样的类。
4) 创建该类对象,使用对象完成功能。
4、面向对象三大特征:
1) 封装(encapsulation)
2) 继承(inheritance)
3) 多态(polymorphism)
二、类与对象
1、类:
1) 定义:具有相同特征(属性)和行为(功能)的一类事物的抽象。
2) 格式:
class 类名
{
数据类型 成员变量名;
成员函数{}
}
2、对象:
1) 定义:类的实体
2) 格式:
数据类型 变量名(对象名) = new 数据类型(参数);
3) 对象的使用:
成员变量的访问: 对象名.属性名
成员函数的调用: 对象名.函数名(参数)
3、类与对象的关系:
1) 类是抽象概念,对象是类的具体实例。
2) 一个类可以有多个对象。一个对象只属于一个类。
4、内存位置:
1) 对象由new关键字创建,实体存在于堆栈内存中
2) 任何数据均可以定义成类,创建对象,属于引用类型。
5、成员变量与局部变量:
1) 成员变量
定义位置:类中,整个类中均可以访问。
内存:成员变量随着对象的建立而建立,存在于对象所在的堆内存中。
默认值:成员变量有默认值。
回收:随着对象的回收而回收。
2) 局部变量
定义位置:定义域局部范围,如函数内,语句内等。
内存:局部变量存在于栈内存中。
默认值:没有默认值。
回收:随着作用域结束而回收,通常为语句或函数范围。
注意:局部变量必须先赋值,然后再使用
3) 变量访问原则: 就近原则
4) 为成员变量赋值的方式:
1、使用构造方法
2、使用set方法
注意:
1、构造方法与set方法均能为成员变量赋值,并不冲突。
2、构造方法只在创建对象时进行成员变量初始化。
3、对象创建后由set方法依据需求修改成员变量值。
6、匿名对象
1) 定义:匿名对象是对象的简化形式,即没有名字直接创建的对象。
2) 匿名对象的使用:
对象方法只调用一次时。
作为实际参数传递时。
作为返回值返回时。
7、创建对象时JVM所作动作:
栈内存开辟空间存储引用变量
使用new创建内存空间
调用构造方法
成员变量默认初始化
成员变量显示初始化
构造函数初始化
对象创建结束,将地址赋值给引用变量
三、封装
1) 定义:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
2) 优点:
将变化隔离、便于使用、提高重用性、提高安全性
3) 原则:
将不需要对外提供的内容都隐藏起来,提供公共方法对其访问。
4) private关键字:
1、是一个权限修饰符,用于修饰成员(成员变量和成员函数)
2、被私有化的成员只在本类中有效。
3、常用方式:将成员变量私有化,对外提供对应的set ,get方法对其进行访问。提高对数据访问的安全性。
四、构造函数
1) 定义:用来创建实例对象时调用的方法。
2) 格式:
修饰符 类名(数据类型 参数){}
3) 特点:
1、函数名与类名相同,与函数名标识符命名原则相悖
2、不进行返回值类型的定义,构造方法没有返回值
4) 作用:
为对象属性进行初始化
5) 注意事项:
1、如果没有手动给出构造方法,则java会为我们提供一个空参的构造方法。
2、如果手动地给出任意构造方法,则java均不会再为我们提供构造方法。
3、多个构造方法使用重载的方式给出。
五、static关键字
1) 定义:静态修饰符,用于修饰成员(变量与函数)。
2) 修饰后成员特点:
1、被所有对象共享
2、随着类的加载而加载,与创建对象时机无关
3、可以直接通过类名访问或调用
3) 注意事项:
1、静态修饰的变量一旦赋值便影响所有实例
2、静态方法只能访问静态成员
3、静态方法中无法使用this或者super
六、代码块
1) 定义:一块独立的代码区域,使用{}划定
2) 分类:
1、局部代码块
位置:存在于方法中
作用:控制变量作用域,影响变量生命周期
2、构造代码块
位置:存在于类中
作用:将构造器中相同代码抽取,在构造器前执行
3、静态构造代码块
位置:存在与类中
作用:只初始化一次
3) 执行顺序:静态构造代码块>构造代码块>局部代码块
静态代码块>默认初始化>显式初始化>构造代码块初始化>构造函数初始化
七、内存分配:
Java程序在运行时,需要在内存中分配空间。为了提高运算效率,有对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。
1、栈内存:存储局部变量,当数据使用完,所占空间会自动释放
2、堆栈内存:
通过new创建的实例均在堆栈当中
每一个实例均有内存地址
均有默认值
实体可以成为垃圾,在不确定的时刻被垃圾回收期回收
3、其他区域:方法区、本地方法区、寄存器等。