继承
- java中所有的继承都是公有继承
- 超类私有成员变量继承之后也不能直接访问到,需要通过super来获取和更改
- 子类override后的方法属于子类本身,该方法不能访问到超类的私有成员变量,要访问超类的私有成员变量仍然要通过super来获取
- super调用构造器的语句必须是子类构造器的第一条语句;如果超类没有不带参的构造器,必须在子类的构造器中显式调用超类的其他构造器
- 子类的每个对象也是超类的对象,反之不能将超类的引用赋值给子类变量
- 重载解析(overloading resolution):编译器查看调用方法时提供的参数类型,如果在所有名字为该方法的方法中存在一个与提供的参数类型完全匹配,就选择这个方法
- 类的private,static,final方法
- private:私有方法,对其他类不可见
- static : 属于类而不是对象本身的方法
- final :不允许拓展的方法
- 在覆盖一个方法的时候,子类方法不能低于超类方法的可见性
- 抽象类不能被实例化,但是可以定义一个抽象类的对象变量来引用非抽象子类的对象
- 在java中只有基本类型不是对象,所有的数组类型都扩展了Object类
- 每一个对象都有一个默认的散列码,其值为对象的存储地址
- 所有的基本类型都有一个与之对应的类,这些类被称为包装器,一旦构造了包装器,就不允许改变包装在其中的值
- 覆盖equals方法的示例
Public class Employee{
...
public boolean equals(Object otherObject){
// 首先比较这两个对象变量是不是指向同一个对象
if(this == otherObject)return true;
// 再判断otherObject是不是为空
if(otherObject == null) return false;
// 再判断对象变量的类型指向对象所属的类是否一致
if(getClass() != otherObject.getClass()) return false;
// 再判断类中的属性是不是一致的
Employee other = (Employee) otherObject;
return name.equals(other.name)...
}
}