构造方法
- 构造方法:Constructor[构造器]
- 构造方法的作用:
创建对象并在创建过程中给属性赋值(即初始化) - 构造方法通过new调用,构造方法必须和类名保持一致,可以重载,不需要返回值类型
- 为防止缺省构造器(即未定义构造方法时系统会默认有一个无参数构造方法)的丢失,建议手动将无参数构造方法写出来
- 实例变量在调用构造方法时完成初始化
封装
- 面向对象的三大特征:封装、继承、多态
有了封装才有继承,有了继承才有多态。 - 面向对象的首要特征:封装
- 定义:将内部复杂的结构通过一层外壳包起来,保证内部的部件或者结构是安全的。
- 作用:①保证内部结构的安全②屏蔽复杂,暴露简单。在代码级别上:一个类体的数据,假设封装之后,对代码的调用人员来说,无需关心代码的复杂实现,只需通过一个简单的入口即可访问,此外,类体中安全级别较高的数据被封装起来时,外部人员不能访问,以此来保证数据的安全性。
- 怎么进行封装?代码如何实现?
第一步:属性私有化(使用private关键字进行修饰)
第二步:对外提供简单的操作入口,即通过get方法专门完成读,set方法专门完成写,并且都不带static关键字修饰,均为实例方法。 - 没有static修饰的方法称为实例方法(即对象方法,对象级别的方法)
对象被称为实例;实例相关的有:实例变量,实例方法。
实例变量是对象变量,实例方法是对象方法。
实例相关的都需要new对象,通过引用 “.” 的方法去访问
带static关键字修饰的通过 “类名.xxx” 方法调用 - 补充:空指针异常导致的最本质的原因是:空引用访问“实例变量相关的数据”,会出现空指针异常。
注意!
Java开发规范中有要求,set方法和get方法需满足以下格式:
get方法的要求:
public 返回值类型 get+属性名首字母大写(无参数){
return 返回值类型;
}
set方法的要求:
public void set+属性名首字母大写(有1个参数){
xxx = 参数;
}
static关键字
- static:译为静态的
- 所有static关键字修饰的都是类相关的,类级别的
- static修饰的变量:静态变量;static修饰的方法:静态方法
- 何时声明变量为实例的,何时声明为静态的?
静态变量在类加载时初始化,不需要new对象静态变量的空间就开辟出来了,静态变量存储在方法区。如果这个类型的所有对象的某个属性值都是一样的,建议定义为类级别特征(即静态变量),在方法区中只保留一份,节省内存开销 - 什么时候定义为实例方法?什么时候定义为静态方法?
参考标准:当这个方法体中直接访问了实例变量,这个方法一定是实例方法。在以后的开发中,大部分情况下,如果是工具类,工具类中的方法一般是静态的。
静态代码块(使用static关键字定义)
什么是静态代码块?语法?
static{
Java语句;
Java语句;
}
- static静态代码块在什么时候执行?
在类加载的时候执行并且只执行一次。 - 静态代码块的特征/特点:
①静态代码块只在类加载时执行,并且在main方法之前执行。
②一般按照自上而下的顺序执行
③一个类中可以编写多个静态代码块 - 静态代码块的作用:
①静态代码块并不常用
②实际上静态代码块这种语法机制叫做类加载时机
③静态代码块和静态变量都是在类加载时执行,时间相同,只能靠代码的顺序来决定。
④实例代码块在每次调用构造方法前都会调用