Java 面向对象(八)

简介: 掌握Object类的作用及其主要方法的作用。 掌握包装类的作用以及自动装箱和拆箱的操作。 掌握匿名内部类的使用。

学习内容:


掌握Object类的作用及其主要方法的作用。

掌握包装类的作用以及自动装箱和拆箱的操作。

掌握匿名内部类的使用。


1、Object类

基本作用

在Java中所有的类都有一个公共的父类Object,一个类只要没有明显地继承一个类,则肯定是Object类的子类。

🔸如下两行代码表示的含义都是一样的:


class Person extends Object{ }
class Person{ }

那么既然继承了Object类,Object类有哪些作用呢?实际上在Object类中提供了很多的方法,这些方法经常被开发者所使用。下面是常用的几种方法:

image.png


image.pngimage.png

主要方法

(1)toString()方法


当我们输出一个对象的引用时,实际上就是调用当前对象的toString()


自定义类也可以重写toString()方法,当调用此方法时,返回对象的"实体内容"。


public String toString(){
  return "User [name="+name+",age="+age+"]";
}


开发中使用自动生成的toString()


🔸注意:


前面说过当我们输出一个对象的引用时,实际上就是调用当前对象的toString(),但是我们输出时写还是不写是有区别的。


public void test(){
  String str="你好,Java";
  str=null;
  System.out.println(str);//null
  System.out.println(str.toString());//java.lang.NullPointerException
}


(2)equals()方法

🔸equals()方法的使用:Java 面向对象(三)(String内容的比较)


接收任意引用类型的对象

既然Object类是所有对象的父类,则所有的对象都可以向Object进行转换,在这其中也包含了数组和接口类型,即一切的引用数据类型都可以使用Object进行接收。


🔸范例:使用Object接收接口实例

interface A{
  public String getInfo();
}
class B implements A{
  public String getInfo(){
    return "Hello World!!";
  }
}
public class ObjectDemo{
  public static void main(String[] args){
    A a=new B();
    Object obj=a;//对象向上转型
    A x=(A)obj;//对象向下转型
    System.out.println(x.getInfo());
  }
}


🔸运行结果:


Hello World!!

虽然接口不能继承一个类,但是依然是Object类的子类, 因6为接口本身是引用数据类型,所以可以进行向上转型操作。


2、包装类

(1)包装类介绍

在Java的设计中提倡一种思想,即一切皆对象,那么这样就出现了一个矛盾,从数据类型的划分中可以知道Java中的数据类型分为基本数据类型和引用数据类型,但是基本数据类型怎么能够称为对象呢?此时,就需要将基本数据类型进行包装,将8种基本类型变为一个类的形式,那么这也就是包装类的作用。


🔸包装类与基本数据类型的关系如下所示:

image.png


image.png

🔸可以从JDK文档中发现包装类中的继承关系:


(1)Integer、Byte、Float、Double、Short、Long都属于Number类的子类,Number类本身提供了一系列的返回以上6种基本数据类型的操作。

(2)Character属于Object的直接子类。

(3)Boolean属于Object的直接子类。

Number类是一个抽象类,主要是将数字包装类中的内容变为基本数据类型.


🔸 Number 类中定义的方法如表所示:

image.png

(2)装箱与拆箱

装箱:将一个基本数据类型变为包装类,这样的过程称为装箱操作。

拆箱:而将一个包装类变为基本数据类型的过程称为拆箱操作。

🔸范例:


public class Demo{
  public static void main(String[] args){
    int x=30;
    Integer i=new Integer(x);//装箱
    int temp=i.intValue();//拆箱
  }
}


🔸范例:自动装箱,拆箱


public class Demo{
  public static void main(String[] args){
    Integer i=30;
    Float f=30.3f;
    int x=i;
    float y=f;


(3)包装类应用

包装类在实际中用得最多的还是字符串变为基本数据类型的操作


例如,将一个全由数字组成的字符串变为一个int或float 类型的数据。在Integer和Float类中分别提供了以下两种方法:


Integer类(字符串转int型)

public static int parseInt (String s) throws NumberFormatException


Float类(字符串转float型)

public static float parseFloat (String s) throws NumberFormatException


在使用以上的两种操作时,一定要注意字符串必须由数字组成。


3、匿名内部类

在Java中除了内部类之外,还有一种名内部类。匿名内部类就是指没有一个具体名称的类,且是在接口和抽象类的应用上发展起来的


🔸范例:


interface Y{
    public void printInfo();
}
class X{
    public void fun1(){
        this.fun2(new Y(){//匿名内部类
            public void printInfo(){
                System.out.println("Hello World!");
            }
        });
    }
    public void fun2(Y y){
        y.printInfo();
    }
}
public class De{
    public static void main(String[] args){
        new X().fun1();
    }
}


🔸运行结果:


Hello World!


🔸分析:

(1)直接实例化接口对象,代码如下:


new Y(){ }


此时,是直接为接口实例化,从前面的概念应该知道,接口本身是不能直接进行实例化的,所以在接口实例化后要有一个大括号,在其中编写具体的实现方法。


(2)实现抽象方法,代码如下:


new Y(){//匿名内部类
    public void printInfo(){
        System.out.println(“Hello World!”);
    }
}
目录
相关文章
|
16天前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
19 1
|
29天前
|
JavaScript 前端开发 Java
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
欢迎来到我的博客,我是瑞雨溪,一名热爱JavaScript和Vue的大一学生。如果你从我的文章中受益,欢迎关注我,我将持续更新更多优质内容。你的支持是我前进的动力!🎉🎉🎉
24 0
还不明白面向对象? 本文带你彻底搞懂面向对象的三大特征(2024年11月Java版)
|
1月前
|
Java 关系型数据库 数据库
面向对象设计原则在Java中的实现与案例分析
【10月更文挑战第25天】本文通过Java语言的具体实现和案例分析,详细介绍了面向对象设计的五大核心原则:单一职责原则、开闭原则、里氏替换原则、接口隔离原则和依赖倒置原则。这些原则帮助开发者构建更加灵活、可维护和可扩展的系统,不仅适用于Java,也适用于其他面向对象编程语言。
37 2
|
3月前
|
Java 编译器
封装,继承,多态【Java面向对象知识回顾①】
本文回顾了Java面向对象编程的三大特性:封装、继承和多态。封装通过将数据和方法结合在类中并隐藏实现细节来保护对象状态,继承允许新类扩展现有类的功能,而多态则允许对象在不同情况下表现出不同的行为,这些特性共同提高了代码的复用性、扩展性和灵活性。
封装,继承,多态【Java面向对象知识回顾①】
|
3月前
|
Java
java中面向过程和面向对象区别?
java中面向过程和面向对象区别?
36 4
|
3月前
|
Java
接口和抽象类【Java面向对象知识回顾②】
本文讨论了Java中抽象类和接口的概念与区别。抽象类是不能被实例化的类,可以包含抽象和非抽象方法,常用作其他类的基类。接口是一种纯抽象类型,只包含抽象方法和常量,不能被实例化,且实现接口的类必须实现接口中定义的所有方法。文章还比较了抽象类和接口在实现方式、方法类型、成员变量、构造方法和访问修饰符等方面的不同,并探讨了它们的使用场景。
接口和抽象类【Java面向对象知识回顾②】
|
2月前
|
存储 Java 程序员
Java基础-面向对象
Java基础-面向对象
19 0
|
4月前
|
Java 数据处理 开发者
【Java基础面试十二】、说一说你对面向对象的理解
这篇文章阐述了面向对象是一种以类和对象为基础,通过封装、继承和多态等概念来模拟现实世界中的事物及其相互关系的程序设计方法,它强调以事物为中心进行思考和系统构造,与结构化程序设计相比,更符合人类的自然思维方式。
【Java基础面试十二】、说一说你对面向对象的理解
|
3月前
|
安全 Java Go
面向对象程序设计语言:Java
Java语言语法和C语言和C++语言很接近,很容易学习和使用,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的特性,Java语言不使用指针,而是引用,并提供了自动分配和回收内存空间,使得程序员不必为内存管理而担忧
74 2
|
4月前
|
Java
【Java基础面试十三】、面向对象的三大特征是什么?
这篇文章介绍了面向对象程序设计的三大基本特征:封装、继承和多态,其中封装隐藏对象实现细节,继承实现软件复用,多态允许子类对象表现出不同的行为特征。
【Java基础面试十三】、面向对象的三大特征是什么?
下一篇
DataWorks