访问修饰符
- private:仅对本类可见。
- 无修饰符(默认):对本包可见。
- protect:对本包以及所有子类可见。
- public:对所有类可见。
修饰符\可见域 | 类内部 | 本包 | 子类 | 外部包 |
---|---|---|---|---|
private | √ | |||
无修饰符 | √ | √ | ||
protect | √ | √ | √ | |
public | √ | √ | √ | √ |
equlas方法的重载
《core java》提供的一种方法
- 显式参数命名为 other。
if (this == other) return true;
检测是否引用到同一个对象。(似乎可以省略)if (this == null) return false;
防止之后的检测抛出异常。if (getClass() != other.getClass()) return false;
不属于同一个类则不相等。- 比较所有域名。
// field1域是基本类型时直接比较,不是基本类型的话需要调用Objects的静态方法equals。
return field1 == other field1
&& Objects.equals(field2, other.field2)
//如果调用field2.equals(other.filed2),则对于field2是null会抛出异常。
Objects.equals方法的源码如下:
杂
- 当自定义了构造函数时,默认构造函数将不会生成。子类的构造函数会默认调用父类的默认构造函数,如果父类没有默认构造函数则报错,子类也可以在构造函数中调用父类的构造函数(super),但是必须放在第一句。
- 子类重写的方法的可见性不能低于父类方法的可见性(访问修饰符父类是protected,则子类不能是private,可以是public)。
- 类中的代码块初始化变量域的执行顺序是,(1)变量初始化;(2)变量初始化和代码块的位置决定赋值顺序。
- 常量也不一定不可以修改,比如依靠本地方法。
- super和this的区别:super有两种用法:(1)相当于域,代表的是父类的域;(2)调用父类的构造函数; this有两种用法:(1) 相当于当前对象;(2)调用自己的其他构造函数。
- object的基本方法:如:tostring, equals, hashCode, clone, finalize。