封装就是把对象的属性,行为组装成一个类,并对其内部细节加以隐藏.
一 组装类
public class 类名{
初始化块
属性
构造方法
行为
}
1.属性
属性在定义时先要书写访问修饰符,确定外界是否有访问它的权限(一般都是private).
只能是变量和常量,可以是基础数据类型也可以是引用数据类型;如果确定所有对象都共有一个确定值的属性时,则定义为常量,常量一般定义为 public 因为无法更改,随便看;变量定义时是自动初始化的,基础数据类型初始化为0,引用数据类型初始化为null.也可以手动赋值.
类也是一种引用数据类型,所以一个类可以是另一个类的属性,这是类与类中的has a关系
属性变量又叫做成员变量,整个类都能对其进行操作,属性常量也是.
2.行为
行为,就是对象所共有的方法,代表这对象所具有的功能.
声明与实现与基础语法不违背,只是可选修饰符一般是不写的.
注意:另一个类是可以作为形参传入方法,或者可以在方法实现部分直接创建对象,这是类与类关系中的use a关系.
3.构造方法
构造方法又叫做构造器,用于是产生对象.
特点:a.如果不写构造方法,会默认为公共的,无参的构造方法.有写构造方法则默认构造方法自动无效.
b.构造方法的方法名必须和类名一致.
c.没有返回类型
d.构造方法可以重载.根据外界创建对象传入的参数确定调用对应的构造方法.
4.初始化块
语法:
动态初始化块: 静态初始化块:
{ static{
//语句 //语句
} }
动态初始化块执行时机是父类构造方法之后,子类构造方法之前,所以通常不被使用,语句可以直接写进构造方法中,在此做个了解;静态初始化块执行时机是在类加载期并且只执行这一次,所以常作资源的准备工作.
二 信息隐藏
目前只学到了一种信息隐藏的方式,就是访问修饰符
本类 | 同包 | 不同包 | ||||
子类 | 非子类 | 子类 | 非子类 | |||
private-私有的 | √ | × | × | × | × | |
默认 | √ | √ | √ | × | × | |
protected-受保护的 | √ | √ | √ | √ | × | |
public-公共的 | √ | √ | √ | √ | √ |
可以看到public是对外部公开的;protected则是只有同包和子类才能访问;默认既是同包;private只有自己能访问自己.访问修饰符可以修饰属性,行为,构造方法.但是如果构造方法设置为private,外界就没有办法创建对象了.
在设计上,所有的属性都应该是私有的,但是要对外提供get()方法个set()方法;好处是,让属性更加可控,如果只想给外界看,就可以只设置get()方法,get()输出的也可以不是属性的数据类型;set()方法是需要接收数据的,可以在实现部分对数据加以限制,符合标准才允许修改.
行为的访问修饰符,取决于这个行为需不需要被外部调用.
三 使用类
类是不能直接被使用的,因为抽象.需要通过类实例化一个对象.对对象进行操作.使用new关键字
语法: 类名 对象名 = new 构造方法名();
这句话构造方法的执行步骤:1.在内存划分空间.
2.在该空间划分属性.
3.对属性初始化.
4.执行构造方法实现部分
=号左边在栈空间划分一块空间,四个字节.用于存储创建好的对象赋值过来的引用.