首页 > 编程语言 >Java核心API——Object类

Java核心API——Object类

时间:2024-07-17 20:26:50浏览次数:9  
标签:Java Point int Object API return public

Object简介

          Object类是所有类的根类,这意味着在Java中创建的每一个类都直接或间接地继承自 Object 类(除了 Object 类本身以外,因为它没有父类)

       看到这里你或许还是不明为什么要有Object类下面我就详细解释。首先这里就不得不提到Java这门语言让人熟知的特点:面向对象。这也是常人的思维模式,例如当我们看到一个手机时,我们可以立刻识别出它是一部手机,这就是一个对象。手机的外观、品牌、型号、功能等都可以看作是对象的属性或状态。而我们可以对手机进行的操作,如拨打电话、发送短信、拍照等,则是对象的方法或行为,而电子产品则是手机的父类。从这个简单的例子你或许明白了面向对象的思维。那么在生活中我们遇到一个不知道或者不清楚的东西我们把它统称为什么呢?那就是是物体,一个物体,对了这就是object的翻译。Object在Java中扮演着至关重要的角色,它是所有类的基础,为Java的面向对象编程和运行时环境提供了核心的支持。

设计Object类的优点 

  1、统一接口:

        通过让所有的类都继承自 Object 类,Java 提供了一个统一的接口给所有的对象。这意味着,无论对象的实际类型是什么,你都可以调用一些基本的、共有的方法。这些方法为所有对象提供了基本的操作和行为。


   2、多态性:

          多态性是面向对象编程的一个重要特性,它允许我们以统一的接口处理不同类型的对象。由于所有的类都继承自 Object 类,我们可以编写能够处理任何类型对象的代码,只要这些对象都遵循 Object 类中定义的方法。

        3、运行时类型信息:

          通过 Object 类中的 getClass() 方法,我们可以在运行时获取对象的实际类型信息。这对于反射(Reflection)和动态类型检查等高级特性非常重要。


        4、内存回收:

          虽然 Object 类本身并不直接负责内存回收,但它是垃圾收集器(Garbage Collector, GC)在Java中工作的基础。由于所有的对象都继承自 Object 类,垃圾收集器可以统一地识别和回收那些不再被引用的对象,从而帮助管理内存。


        5、简化设计:

          通过将所有的类都设计为继承自一个共同的基类,Java的设计者简化了语言的设计和实现。这种简化的设计使得Java的编译器和运行时环境可以更加高效地处理对象,因为它不需要为每种类型的对象都实现一套独立的方法。


        6、扩展性:

          虽然大多数时候我们不会直接继承 Object 类(因为几乎所有的类都自动继承自它),但 Object 类提供了一个基础,使得我们可以创建自己的类层次结构,并在其中添加新的方法和行为。这种扩展性使得Java成为一种非常灵活和强大的编程语言。

Object类常用方法与代码实例 

首先我们定义一个测试类point ,并且重写equals与toString方法

 

/**
 * 使用当前类测试超类Object中经常被子类重写的方法:equals与toString
 */
public class Point {
    private int x;
    private int y;

    public Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Point point = (Point) o;
        return x == point.x && y == point.y;
    }

    @Override
    public int hashCode() {
        return Objects.hash(x, y);
    }

    @Override
    public String toString() {
        return "Point{" +
                "x=" + x +
                ", y=" + y +
                '}';
    }

    public void setX(int x) {
        this.x = x;
    }

    public void setY(int y) {
        this.y = y;
    }

    public int getX() {
        return x;
    }

    public int getY() {
        return y;
    }
}

接着可以看到测试类中两个方法的实例

public class TestPoint {
    public static void main(String[] args) {
        Point p = new Point(3, 4);
        System.out.println(p);

        String line="当前字符串为:"+p;
        System.out.println(line);
        System.out.println(line.toString());//输出结果一致,默认调用toString


        Point p2=new Point(3,4);
        System.out.println(p==p2);//false
        System.out.println(p2.equals(p));//true
    }
}

 

标签:Java,Point,int,Object,API,return,public
From: https://blog.csdn.net/qishuang6/article/details/140402344

相关文章

  • deepspeed训练模型提示:cpu_adam.so: cannot open shared object file: No such file o
    背景本人在安装deepspeed后遇到了这个报错,明眼人一看就是缺库,但是搜索到的解决方案(凌漪_,2023)说是设置一个环境变量,实在是治标不治本,而且对本人来说连标都治不了。其他的博客尚未看到解决此问题的。分析这个so文件理论上应该在安装deepspeed的过程中就自动编译好了,但是......
  • Java——IO流
    1.IO流简介流是一个抽象的概念,它是一串连续动态的数据集合Java.io包中几乎包含了所有操作输入和输出需要的类,同时也支持很多格式,比如:基本类型,对象,本地化字符等io包中主要包括四大抽象类,分别是Writer,OutputStream,InputStream,Reader,其中Writer和OutputStream属于......
  • whisper-api语音识别语音翻译高性能兼容openai接口协议的开源项目
    whisper-api介绍使用openai的开源项目winsper语音识别开源模型封装成openaichatgpt兼容接口软件架构使用uvicorn、fastapi、openai-whisper等开源库实现高性能接口更多介绍[https://blog.csdn.net/weixin_40986713/article/details/138712293](https://blog.csdn.net......
  • 不能求二阶导的metrics,不是好的objective?!
    接上一篇。今天我们要分析MAPE这个函数在论文中的使用。以此为契机,适当深入一点机器学习的原理,讲以下两个知识点:1.损失函数和度量函数2.XGBoost模型,因子数据是否要标准化损失函数与度量函数在机器学习中,有两类重要的函数,一类是目标函数(objectivefunctio......
  • 【汇总】EMQX 函数API、安装与使用说明
    前言全局说明EMQX函数说明一、说明二、Client的基本使用流程创建客户端实例使用connect*()函数之一连接到代理调用loop*()函数之一来维护与代理的网络流量使用subscribe()订阅主题并接收消息使用publish()将消息发布到代理使用disconnect()断开与代理的......
  • 利用FastAPI和OpenAI-Whisper打造高效的语音转录服务
    最近好久没有写博客了,浅浅记录下如何将OpenAI-Whisper做成Web服务吧......
  • 常用的 JavaScript 数组处理方法
    1.map方法用于创建一个新数组,其结果是该数组中的每个元素调用一个提供的函数后返回的结果。letitems=[{id:1,name:'item1'},{id:2,name:'item2'},{id:3,name:'item3'}];letitemNames=items.map(item=>item.name);console.log(itemNames);......
  • 在 PowerShell 中Get-WmiObject Win32_PhysicalMemory,SMBIOSMemoryType 是一种用于描
    在PowerShell中Get-WmiObjectWin32_PhysicalMemory,SMBIOSMemoryType是一种用于描述系统中物理内存类型的属性。数字26表示特定的内存类型,具体为DDR4内存。每种内存类型在SMBIOS(SystemManagementBIOS)规范中都有一个对应的数字码,用来标识不同类型的内存。以下是一些常见......
  • Java语言基础-03
    1.Scanner接收用户输入的数据:packageday04;importjava.util.Scanner;//1.导入一个扫描仪//Scanner的演示publicclassScannerDemo{publicstaticvoidmain(String[]args){//创建类CommandBySwitch,接收用户输入的命令command(int),并输出......
  • 【java计算机毕设】网上购书管理系统MySQL servlet JSP项目设计源代码 期末寒暑假作业
    目录1项目功能2项目介绍3项目地址1项目功能【java计算机毕设】网上购书管理系统MySQLservletJSP项目设计源代码期末寒暑假作业小组作业 2项目介绍系统功能:servlet网上购书管理系统包括管理员、用户两种角色。管理员功能包括订单管理(已处理,未处理),顾客管理(添......