类篇entry1
关键词: 封装; 消息;
封装
class FighterPlane
{
private String name;
private int missileNum;
public void setName(String _name)
{ if(_name != null){
name = _name.trim(); }
}
public void setNum(int _missileNum)
{ if(_missileNum > 0 ){
missileNum = _missileNum;
}
}
public void fire(){
if (missileNum>0){
System.out.println(“now fire a missile!”);
}
else
{System.out.println(“No missile left!”);}
}
}// end class
访问控制
体现封装,则需要掌握访问控制符public、 protected、 private、 “默认”的用法。
在java中这些修饰符可以修饰的地方有3种:
- 修饰类
- 修饰类的属性成员(域)
- 修饰类的成员方法
类属性成员方法\类前修饰符 | public | 缺省 |
---|---|---|
public | A | B |
protected | B或(B+C) | B |
缺省 | B | B |
private | D | D |
类属性成员方法从private到public权限依次增大
访问权限首先看类前的修饰符,当类的修饰符为public时,
则类可以被所有的类所访问(可以import),当为默认时,
则只能为包中的类所访问。在此前提下,再看方法前的修饰符。
类前修饰符为public时,当属性和方法前的修饰符为public时,则该属性可以被所有类访问;当属性和方法前为protected修饰时,对于类定义而言,可以被同包中的类和所有子类访问(子类和父类可以不在同一个包中),也就是B+C范围,但对于对象而言,只能被同一个包的类对象所访问,也就是B的范围;当为默认时,只能被同包中的类所访问(比protected访问权限小);当为private时,只能被本类内部所访问 。
消息
消息的实质就是引用向对象发出的服务请求,是对数据成员
和成员方法的调用,例如 fp.name 和 fp.fire()就是发送消息。
能否发送消息取决于
- 引用必须引用了特定的对象,否则会在运行是抛出NullPointerException异常。
- 对象必须定义了相应的属性或方法,否则编译不会通过。
- 被访问的属性或方法必须具有可访问的权限。