第五章 面向对象之三

 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比较的都是地址,作用相同

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值