1.类与类之间的关系
- 依赖:uses-a
- 聚合:has-a
- 继承:is-a
2.方法参数:按值调用
- 一个方法不能修改一个基本类型的参数
- 一个方法可以改变一个对象参数的状态
- 一个方法不能让对象参数引用另一个新的对象
3.包的作用域:
- 标记为public部分可以被任意的类使用
- 标记为private的部分只能被定义它们的类使用
- 没有指定public或private的部分,可以被同一个包中的所有方法访问
4.类的继承
- extends 关键字 表示继承; 已存在的类成为超类,基类,或者父类,新类称为子类,派生类,或者孩子类;java中所有的继承都是公有继承,不支持多继承
- super 是一个指示编译器调用超类方法的关键字
- 多态,可以将一个子类的对象赋给超类的变量,动态绑定无需对现存的代码进行修改,就可以对程序进行扩展
- final 阻止继承
- abstract 抽象类不能被实例化,抽象类可以包含具体的数据和具体的方法
- proteced 受保护的访问,对本包和所有子类可见
- @Override 对覆盖超类的方法进行标记
5.Object:所有类的超类
- Class getClass() 返回包含对象信息类对象
- bollean equals(Object otherObject) 比较两个对象是否相等,如果两个对象指向同一块存储区域,返回true,否则返回false。
- String toString 返回描述该对象值的字符串
- int hasCode() 返回对象的散列码
- 自定义类中, 如果重新定义equals,就必须重新定义hashCode方法
- 重新定义equals,
public boolean equals(Object otherObject)
{
// 1.检测是否为同一个对象的饮用
if (this == otherObject) return true;
// 2.检测是否为null
if (otherObject == null) return false;
// 比较是否属于同一个类
if (getClass() != otherObject.getClass()) return false;
或者 if(!(otherObject instanceof ClassName)) return false;
// 转换为对应的类型
Employee other = (Employee) otherObject;
// 进行所需域的比较
return name.equals(other.name) && salary == other.salary);
5.Class 类
- static Class forName(String className) 返回描述类名为classNamede 的Class对象
- Object newInstance() 返回这个类的一个新实例
- File[] getFileds() 返回所有公有域的数组,包括这个类和其超类
- File getFile(String name) 返回指定名称的公有域
- Filed[] getDecloared() 返回这个类全部域的数组
- Method[] getMehtods() 返回所有公有方法,包括从超类继承的
- Method[] getDeclaredMethods() 返回这个类或接口的全部方法
- Method的invoke方法