1、java.lang.Object类的九个常用方法
1.public boolean equals(java.lang.Object) 比较内容
2.public native int hashCode() 哈希码
3.public java.lang.String toString() 变成字符串
4.public final native java.lang.Class getClass() 获取类结构信息
5.protected void finalize() throws java.lang.Throwable 垃圾回收前执行的方法
6.protected native Object clone() throws java.lang.CloneNotSupportedException 克隆
7.public final void wait() throws java.lang.InterruptedException 多线程中等待功能
8.public final native void notify() 多线程中唤醒功能
9.public final native void notifyAll() 多线程中唤醒所有等待线程的功能
2、private/默认/protected/public权限修饰符的区别
访问控制 | public | protected | 默认 | private |
同一类中成员 | 是 | 是 | 是 | 是 |
同一包中其它类 | 是 | 是 | 是 | |
不同包中的子类 | 是 | 是 | ||
不同包中对非子类 | 是 |
类的访问权限只有两种
public 公共的 可被同一项目中所有的类访问。 (必须与文件名同名)
default 默认的 可被同一个包中的类访问。
成员(成员变量或成员方法)访问权限共有四种:
public 公共的 可以被项目中所有的类访问。(项目可见性)
protected 受保护的 可以被这个类本身访问;同一个包中的所有其他的类访问;被它的子类(同一个包以及不同包中的子类)访问。(子类可见性)
default 默认的 被这个类本身访问;被同一个包中的类访问。(包可见性)
private 私有的 只能被这个类本身访问。(类可见性)
3、继承条件下构造方法的执行过程
继承条件下构造方法的调用规则如下:
1、如果子类的构造方法中没有通过super显式调用父类的有参构造方法,也没有通过this显式调用自身的其他构造方法,则系统会默认先调用父类的无参构造方法。在这种情况下,写不写“super();”语句,效果是一样的。
2、如果子类的构造方法中通过super显式调用父类的有参构造方法,那将执行父类相应构造方法,而不执行父类无参构造方法。
3、如果子类的构造方法中通过this显式调用自身的其他构造方法,在相应构造方法中应用以上两条规则。
4、特别注意的是,如果存在多级继承关系,在创建一个子类对象时,以上规则会多次向更高一级父类应用,一直到执行顶级父类Object类的无参构造方法为止。
4、==和equals的区别和联系
4.1 ==:
a) 基本类型,比较的是值
b) 引用类型,比较的是地址
c) 不能比较没有父子关系的两个对象
4.2 equals():
a) 系统类一般已经覆盖了equals(),比较的是内容。
b) 用户自定义类如果没有覆盖equals(),将调用父类的equals(比如是Object),而Object的equals的比较是地址(return (this == obj);)
c) 用户自定义类需要覆盖父类的equals()
注意:Object的==和equals比较的都是地址,作用相同