Java培训之面向对象Object类

1 Object类的特点

  Object类是所有类的根父类, 也就是说如果一个类没有显式声明父类, 那么这个类的父类就是Object类, 所以, Object类中的属性和方法会被所有类继承, 都可以直接调用.

2 类中的典型方法

2.1. toString()

public String toString() 这个方法返回当前对象的一个字符串表示, 通常用于描述这个对象的内容.

这个方法也会在对象被打印和与字符串拼接时自动调用, 结果还是一个字符串.

2.2. equals()

表示两个对象内容是否相等, 通常情况下, 两个不同的对象是不相等的, 但是我们可以通过覆盖这个方法,实现两个内容相等, 但不同的对象之间具有等同性比较能力.

2.3. hashCode()

当两个对象的内容相等时, equals方法的结果就应该返回true, 但同时这两个对象调用hashCode方法返回的哈希码值也必须要相等, 相同的道理, 两个hashCode码值不同的对象, equals方法一定返回false.

public class Point {

 

       private int x;

       private int y;

 

       public Point() {}

       public Point(int x, int y) {

              this.x = x;

              this.y = y;

       }

 

       public void setX(int x) {

              this.x = x;

       }

 

       public int getX() {

              return x;

       }

 

       public void setY(int y) {

              this.y = y;

       }

 

       public int getY() {

              return y;

       }

 

       public String say() {

              return “X:” + x + “,Y:” + y;

       }

 

       @Override // 可以完成真实的比较

       public boolean equals(Object obj) {

              if (obj instanceof Point && this.x == ((Point)obj).x && this.y == ((Point)obj).y) {

                     return true;

              }

              return false;

       }

 

       @Override

       public int hashCode() {

              return Integer.parseInt(x * 10 + “” + y * 10);

       }

 

       // 返回对象的字符串表示, 通常在打印对象时调用

       @Override

       public String toString() {

              return “x:” + x + “,y:” + y;

       }

}

 

public class PointTest {

 

       public static void main(String[] args) {

              Point p1 = new Point(10, 20);

              Point p2 = new Point(10, 20);

              System.out.println(p1 == p2); // 打印false, 因为比较两个对象的地址

              boolean b = p1.equals(p2); // 返回true, 因为比较两个对象的内容

              System.out.println(b);

 

              System.out.println(p1.hashCode()); // 两个对象的哈希码也都一样

              System.out.println(p2.hashCode());

 

 

              System.out.println(p1); // 打印对象时, 打印的其实是对象的toString()方法的结果

 

       }

}

3 Object的使用

Object类型通常用于表示任意对象的引用类型, 使用Object类型可以兼容任意对象, 很灵活方便, 也因为Object类是根父类, 所以其中的方法具有普遍性, 便于统一处理.

4 Object的注意点

因为Object类型是父类类型, 所以Object类型的对象究竟是什么类型的对象就变得非常复杂, 所以想要处理不同的子类对象, 比较麻烦, 需要配合instanceof操作符和类型转换.

想要了解跟多关于Java培训课程内容欢迎关注尚硅谷Java培训,尚硅谷除了这些技术文章外还有免费的高质量Java培训训课程视频供广大学员下载学习


上一篇:
下一篇:
关于尚硅谷
教育理念
名师团队
学员心声
资源下载
视频下载
资料下载
工具下载
加入我们
招聘岗位
岗位介绍
招贤纳师
联系我们
电话:010-56253825
邮箱:info@atguigu.com
地址:北京市昌平区宏福科技园综合楼6层(北京校区)

 深圳市宝安区西部硅谷大厦B座C区一层(深圳校区)

上海市松江区谷阳北路166号大江商厦6层(上海校区)