5.1类修饰符
关系:描述元素之间的关系
关联:表示两者有关系,但不定向
泛化:超类和子类的关系
依赖:两个命名元素之间的定向关系
public | 公众可访问 |
缺省 | 包内可访问 |
abstract | 抽象(不能创建对象-不能使用new) |
final | 不能有子类 |
strictfp | 严格浮点计算 |
ps:public class 的类名必须和文件名一致,且只能有一个
5.2 域
public class Body{
public long idNum;
public static long nextId=0
}
定义:类中作为成员的变量
除非静态域,否则不同对象间的域不会互相影响
静态域:对类的所有对象共享的域
访问:内部-直接用域名
外部-通过类名和域名(body.nextID)或者类的对象引用和域名(mercury.nextID)
final域:①定义时初始化②类初始化后(static final)③对象创建完成后(没有static的final)
5.3访问控制
定义:控制一个类或接口中的成员谁能访问该类或接口
访问说明符 | 本类 | 同一包 | 子类 | 其他 |
public | T | T | T | T |
protected | T | T | T | F |
package | T | T | F | F |
private | T | F | F | F |
5.4创建对象
用new创建一个对象。
body a= new body();
5.5构造与初始化
构造器使用与所属类相同的名字
用户可以创造几个构造器 (重载)
可以调用同类中另外一个构造器,使用this
初始化块
public long idNum{
private static longnextID=0;
{
idNum=nextID++; //初始化块取代无参构造器
}
}
拷贝构造器:当前对象类型作为形参,使用时创建一个新对象,作为以对象形式传递实参的一个拷贝 (通常复制所有域的值,不提供缺省的拷贝构造器)
Body(Body other){
idNum=other.idNum;
name=other.name;
orbits=other.orbits;
}
5.6方法
- 访问修饰符
方法修饰符 | 说明 |
static | 静态方法,只能处理静态的变量和静态的方法 |
abstract | 当前类没有定义方法的体,在子类中定义 |
final | 子类不能改写该方法 |
synchronized | 同步型,避免同时访问时数据损毁 |
native | 本地方法 |
strictfp | 严格浮点数 |
- 可变参数:允许调用方法时传入不定长度的参数,本质上是基于数组的实现
void foo(String ... args);
void foo(String[] args);
形参 | 传递到方法中的值 | 改变形参值对实参的影响 |
基本类型(int char) | 实参值得一个拷贝 | 无 |
对象引用 | 传来的是对象的引用,而不是对象本身 | 无 |
5.9 main方法
每个类都可以有各自的main方法,易于进行各自的代码检测
子类的main方法会覆盖父类的main方法,所以不会引起混淆
5.10 native方法
用于编写使用已有而非java的代码,即java可调用c、c++编写的方法
使用nitive方法,将不能保证程序的移植性和安全性。