类与对象
目录
4.2 封装机制
把对象的行为和数形结合成一个独立的单位,并尽可能隐藏对象的内部细节(信息隐藏)。用户无需知道对象内部方法的实现细节,但可以根据对象提供的外部接口访问该对象。
- 封装反映了事务的相对独立性;
- 使对象以外的部分不能随意存取对象的内部数据
封装的特征:
- 在类的定义中设置访问对象数据成员和成员方法的权限;
- 提供一个接口来描述其他对象的使用方法;
- 其他对象不能直接修改本对象所拥有的属性和方法。
类的严谨定义
[类修饰符] class 类名 [extends 父类名] [implements 接口列表]
{
数据成员
成员方法
}
- 一个类只能继承一个父类,单继承;
- 一个类可实现多个接口,接口之间用逗号隔开。
类修饰符
无修饰符
如果一个类无修饰符,则只能被同一个包里的类使用
public
可以供其他包中的类使用,在程序中用import语句引用其他包中的public类,在一个程序文件中,只能定义一个public类,否则会报错。
final
不能被任何其它类继承,而其存在的目的有三:
- 用来完成某种标准功能,使其内容、属性、功能固定下来,形成稳定的映射关系;
- 在必要的层次上设置最终类,提高可读性;
- 提高安全性,不能派生子类;
abstract
刻画了研究对象的公有行为特征,提供公共基类,为派生具体类奠定基础。
4.3 数据成员
static修饰的静态数据成员
- 被保存在类的内存区的公共存储单元,而不是某个对象的内存区中,因此一个类的任何对象访问他时存取到的都是相同的数值;
4.4 成员方法
成员方法的形式看,可将成员方法分为两种:
-
无参成员方法,
void printStar(){...}
-
带参成员方法,
int add(int x,int y){...}
成员方法声明格式
[修饰符] 返回值类型 成员方法名(形式参数表) throw [异常表]
{
说明部分
执行语句部分
}
方法体中的局部变量
- 在方法体内可以定义本方法所使用的变量,这种变量是局部变量,他的生存期与作用域是在本方法内。
- 再方法体内定义变量时,不能加修饰符;
- 局部变量使用前必须明确赋值,否则编译报错;
- 在方法内,可以用复合语句定义变量,这些变量值在复合语句中有效,又叫做程序块。
成员方法中的返回值
若方法有返回值,则在方法体内用 return语句指明要返回的值,
return(表达式);
其中表达式可以是变量、常量、对象等,表达式中的数据类型必须与成员方法头中给出的返回值类型一致。
形式参数&实际参数
-
对于无参方法,没有实参列表,但括号不能省略;
-
对于带参数的成员方法,实参个数、顺序必须与形式参数一致,数据类型按照Java类型转换规则匹配;
-
实参可以是表达式;
-
实参变量对形参变量的数据传递是“值传递”,即只能由实参传递给形参,而不能由形参传递给实参。