封装的概念
封装:包含了两层含义---“封”和“装”,而且应该是先考虑装,再考虑封。
装---目的是为了把散的东西统一在一起,是为了方便处理和使用;
封---目的是为了信息隐藏,但信息隐藏也绝对不是说藏的严严实实,也可以是分各种级别的。
涉及“装”的内容
类的定义
构造方法(构造器、Constructor)
定义语法:
语法:
访问修饰符 类名(形参列表) {
......
}
作用:产生对象
语法细节:
1、没有返回类型,连void都没有;
2、如果不写,编译器会产生默认的公共无参构
造方法;如果写了自定义的构造方法,编译
器就不会产生默认构造方法了;
3、构造方法允许重载;
使用语法
语法:
类名 对象名 = new 构造方法(实参列表);
执行顺序:
1、在内存堆当中划分空间,空间大小根据属性的个数、类型确定;
2、在该空间划分属性存放的位置;
3、对属性进行初始化,如果没有在代码中赋初值值,那么基本类型属性赋值为0,引用数据类型属性赋值null;
4、执行构造方法当中的代码。
这个执行顺序 会在后面学习了继承以及静态等概念之后,进一步丰富。
包的概念
package 关键字
作用:将java类分门别类存放到不同的包结构中
1、编译以后的class文件,class文件也会根据包声明进行对应的结构目录中存放;
2、在不同的包中,可以存在同名的类。
import 关键字
作用:如果要使用非本包中的其他类型,需要向编译器指定这个类型的位置和名称。
1、使用本包当中的类不需要import;
2、使用java.lang包中的类不需要import;
3、如果要使用多个来自不同包的同名类,那么只能import其中1个,其他的应该使用类的限定名。
类的限定名 ---- 真正的类的全名 ;
形如:包名.类名;
对象数组
声明语法:
类名[ ] 数组名 = new 类名[元素个数];
1、对象数组中的每个元素不是一个对象,而是一个存放对象的引用;
2、对象数组new出来之后,默认每个元素都是null;
3、必须保证要访问的数组元素真的指向了一个对象,才能够调用该对象的属性和方法,否则会报运行时异常 ---- 控制针异常!!!
属性:在类型当中装入数据
行为:在类型当中装入功能
涉及“封”的内容
访问修饰符 --- 三个关键字、四种情况
public --- 公共的 --- 任意可访
private --- 私有的 --- 本类自己可访
protected 和 默认不写两种情况留待继承以后再做补充
理论上,属性、构造和普通行为的访问修饰符都应该根据具体问题域具体分析,但一般情况下:
变量属性是private的,然后根据情况提供get/set方法;
常量属性几乎都是public的
构造方法一般都是public的
普通行为一般都是public的
get/set方法
get方法 --- 访问器
语法:
public 对应属性的类型 get属性名(){
return 属性值;
}
set方法 --- 修改器
语法:
public void set属性名(对应属性的类型 属性名){
this.属性名 = 属性名;
}
提供get/set方法的好处
为属性只提供get或set方法,可以让属性数据为只写或只读;
可以在set方法中对数据的有效性进行控制
可以隐藏类当中保存数据的形式
行为
方法本身就是把实现细节进行“封”的实现,让外部的调用者看不到具体的实现(对于外部调用者来说用就可以了)。