JAVA中的超类 OBJECT

步骤 1 : Object类是所有类的父类    
步骤 2 : toString()    
步骤 3 : finalize()    
步骤 4 : equals()    
步骤 5 : ==    
步骤 6 : hashCode()    
步骤 7 : 线程同步相关方法    
步骤 8 : getClass()    
步骤 9 :  练习-Object     
   

 步骤 1 : Object类是所有类的父类 顶 折
声明一个类的时候,默认是继承了Object 
public class Hero extends Object
package charactor;
 
import property.Item;
 
public class Hero extends Object {
        
    String name; //姓名
        
    float hp; //血量
        
    float armor; //护甲
        
    int moveSpeed; //移动速度
     
    public void useItem(Item i){
        System.out.println("hero use item");
        i.effect();
    }   
     
    public Hero(){
        System.out.println("Hero的无参的构造方法 ");
    }
     
    public Hero(String name){
        System.out.println("Hero的有一个参数的构造方法 ");
        this.name = name;
    }
     
    public static void main(String[] args) {
        new Hero();
    }
      
}
 步骤 2 : toString() 顶 折
Object类提供一个toString方法,所以所有的类都有toString方法
toString()的意思是返回当前对象的字符串表达
通过 System.out.println 打印对象就是打印该对象的toString()返回值
package charactor;
  
public class Hero {
    public String name;
    protected float hp;
      
    public String toString(){
        return name;
    }
      
    public static void main(String[] args) {
         
        Hero h = new Hero();
        h.name = "盖伦";
        System.out.println(h.toString());
        //直接打印对象就是打印该对象的toString()返回值
        System.out.println(h);
    }
}
 步骤 3 : finalize() 顶 折
当一个对象没有任何引用指向的时候,它就满足垃圾回收的条件


当它被垃圾回收的时候,它的finalize() 方法就会被调用。


finalize() 不是开发人员主动调用的方法,而是由虚拟机JVM调用的。

 finalize() 

package charactor;
  
public class Hero {
    public String name;
    protected float hp;
      
    public String toString(){
        return name;
    }
     
    public void finalize(){
        System.out.println("这个英雄正在被回收");
    }
      
    public static void main(String[] args) {
        //只有一引用
        Hero h;
        for (int i = 0; i < 100000; i++) {
            //不断生成新的对象
            //每创建一个对象,前一个对象,就没有引用指向了
            //那些对象,就满足垃圾回收的条件
            //当,垃圾堆积的比较多的时候,就会触发垃圾回收
            //一旦这个对象被回收,它的finalize()方法就会被调用
            h = new Hero();
        }
 
    }
}
 步骤 4 : equals() 顶 折
equals() 用于判断两个对象的内容是否相同


假设,当两个英雄的hp相同的时候,我们就认为这两个英雄相同
代码超过 20行,点击查看 
 步骤 5 : == 顶 折
这不是Object的方法,但是用于判断两个对象是否相同
更准确的讲,用于判断两个引用,是否指向了同一个对象
代码超过 20行,点击查看 
 步骤 6 : hashCode() 顶 折
hashCode方法返回一个对象的哈希值,但是在了解哈希值的意义之前,讲解这个方法没有意义。


hashCode的意义,讲放在hashcode 原理章节讲解
 步骤 7 : 线程同步相关方法 顶 折
Object还提供线程同步相关方法
wait()
notify()
notifyAll()
这部分内容的理解需要建立在对线程安全有足够的理解的基础之上,所以会放在线程交互 的章节讲解
 步骤 8 : getClass() 顶 折
getClass()会返回一个对象的类对象,属于高级内容,不适合初学者过早接触,关于类对象的详细内容请参考反射机制
 步骤 9 : 练习-Object     顶 折  Or    姿势不对,事倍功半! 点击查看做练习的正确姿势
重写Item的 toString(), finalize()和equals()方法
toString() 返回Item的name + price
finalize() 输出当前对象正在被回收

equals(Object o) 首先判断o是否是Item类型,然后比较两个Item的price是否相同





  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值