zoukankan      html  css  js  c++  java
  • 接口与继承系列教材 (七)- Java中的超类 Object

    Object类是所有类的父类

    步骤1:Object类是所有类的父类
    步骤2:toString()
    步骤3:finalize() 
    步骤4:equals()
    步骤5:==
    步骤6:hashCode()
    步骤7:线程同步相关方法
    步骤8:getClass()
    步骤9:练习-Object
    步骤10:答案-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相同的时候,我们就认为这两个英雄相同

    package charactor;

      

    public class Hero {

        public String name; 

        protected float hp;

          

        public boolean equals(Object o){

            if(o instanceof Hero){

                Hero h = (Hero) o;

                return this.hp == h.hp;

            }

            return false;

        }

          

        public static void main(String[] args) {

            Hero h1= new Hero();

            h1.hp = 300;

            Hero h2= new Hero();

            h2.hp = 400;

            Hero h3= new Hero();

            h3.hp = 300;

             

            System.out.println(h1.equals(h2));

            System.out.println(h1.equals(h3));

        }

    }

    步骤 5 : ==

    这不是Object的方法,但是用于判断两个对象是否相同
    更准确的讲,用于判断两个引用,是否指向了同一个对象

    package charactor;

      

    public class Hero {

        public String name; 

        protected float hp;

          

        public boolean equals(Object o){

            if(o instanceof Hero){

                Hero h = (Hero) o;

                return this.hp == h.hp;

            }

            return false;

        }

          

        public static void main(String[] args) {

            Hero h1= new Hero();

            h1.hp = 300;

            Hero h2= new Hero();

            h2.hp = 400;

            Hero h3= new Hero();

            h3.hp = 300;

             

            System.out.println(h1==h2);

            System.out.println(h1==h3);

             

        }

    }

    步骤 6 : hashCode()

    hashCode方法返回一个对象的哈希值,但是在了解哈希值的意义之前,讲解这个方法没有意义。

    hashCode的意义,将放在hashcode 原理章节讲解

    步骤 7 : 线程同步相关方法

    Object还提供线程同步相关方法
    wait()
    notify()
    notifyAll()
    这部分内容的理解需要建立在对线程安全有足够的理解的基础之上,所以会放在线程交互 的章节讲解

    步骤 8 : getClass()

    getClass()会返回一个对象的类对象,属于高级内容,不适合初学者过早接触,关于类对象的详细内容请参考反射机制


    更多内容,点击了解: https://how2j.cn/k/interface-inheritance/interface-inheritance-object/312.html

  • 相关阅读:
    前端页面适配的rem换算
    Win10远程桌面 出现 身份验证错误,要求的函数不受支持,这可能是由于CredSSP加密Oracle修正 解决方法
    ES5, ES6, ES2016, ES.Next: What's going on with JavaScript versioning?
    国内的Android SDK镜像
    虚拟串口VSPD破解版 亲测win10 64可用
    Mybatis : "less than" issue in Select annotations
    如何在MyBatis中优雅的使用枚举
    Adding a custom jar as a maven dependency
    Error: Invalid or corrupt jarfile
    使用Json让Java和C#沟通的方法
  • 原文地址:https://www.cnblogs.com/Lanht/p/12615541.html
Copyright © 2011-2022 走看看