Java 中的类和对象 2021-08-14 09:53 10771阅读 2赞 # Java 中的类和对象 类和对象是面向对象编程的基本概念,它们围绕现实生活中的实体展开。 ### 班级 类是用户定义的蓝图或原型,从中创建对象。它表示一种类型的所有对象共有的一组属性或方法。通常,类声明可以按顺序包含这些组件: 1. **修饰符**:一个类可以是公共或具有默认访问。 2. **class 关键字:** class 关键字用于创建类。 3. **类名:** 名称应以首字母开头(按惯例大写)。 4. **超类(如果有):**类的父类(超类)的名称,如果有的话,以关键字 extends 开头。一个类只能扩展(子类)一个父类。 5. **接口(如果有):**类实现的接口的逗号分隔列表**(如果有)**,前面是关键字实现。一个类可以实现多个接口。 6. **主体:**用大括号 { } 包围的类主体。 构造函数用于初始化新对象。字段是提供类及其对象状态的变量,方法用于实现类及其对象的行为。 实时应用程序中使用了各种类型的类,例如 [嵌套类](https://www.geeksforgeeks.org/inner-class-java/)、[匿名类](https://www.geeksforgeeks.org/anonymous-inner-class-java/)、[lambda 表达式](https://www.geeksforgeeks.org/lambda-expressions-java-8/)。 ### 目的 它是面向对象编程的基本单元,代表现实生活中的实体。一个典型的 Java 程序会创建许多对象,如您所知,它们通过调用方法进行交互。一个对象包括: 1. **状态**:它由对象的属性表示。它还反映了对象的属性。 2. **行为**:它由对象的方法表示。它还反映了一个对象对其他对象的响应。 3. **身份**:它为对象提供唯一的名称,并使一个对象能够与其他对象交互。 对象示例:Dog  对象对应于在现实世界中发现的事物。例如,图形程序可能具有诸如“圆形”、“方形”、“菜单”之类的对象。在线购物系统可能具有诸如“购物车”、“客户”和“产品”之类的对象。 ### 声明对象(也称为实例化类) 当一个类的对象被创建时,这个类就被称为**实例化了**。所有实例共享类的属性和行为。但是这些属性的值,即状态对于每个对象都是唯一的。一个类可以有任意数量的实例。 例子:  当我们声明像(类型名称;)这样的变量时。这会通知编译器我们将使用 name 来引用类型为 type 的数据。对于原始变量,此声明还为变量保留了适当的内存量。所以对于引用变量,类型必须严格是一个具体的类名。一般来说,我们**不能**创建抽象类或接口的对象。 ``` Dog tuffy; ``` 如果我们像这样声明引用变量(tuffy),它的值将是不确定的(null),直到一个对象被实际创建并分配给它。简单地声明一个引用变量不会创建一个对象。 ### 初始化一个对象 new 运算符通过为新对象分配内存并返回对该内存的引用来实例化一个类。new 运算符还调用类构造函数。 ``` // Class Declaration public class Dog { // Instance Variables String name; String breed; int age; String color; // Constructor Declaration of Class public Dog(String name, String breed, int age, String color) { this.name = name; this.breed = breed; this.age = age; this.color = color; } // method 1 public String getName() { return name; } // method 2 public String getBreed() { return breed; } // method 3 public int getAge() { return age; } // method 4 public String getColor() { return color; } @Override public String toString() { return("Hi my name is "+ this.getName()+ ".\nMy breed,age and color are " + this.getBreed()+"," + this.getAge()+ ","+ this.getColor()); } public static void main(String[] args) { Dog tuffy = new Dog("tuffy","papillon", 5, "white"); System.out.println(tuffy.toString()); } } ``` **输出:** ``` Hi my name is tuffy. My breed,age and color are papillon,5,white ``` - 此类包含一个构造函数。我们可以识别构造函数,因为它的声明使用与类相同的名称,并且没有返回类型。Java 编译器根据参数的数量和类型区分构造函数。*Dog*类中的构造函数接受四个参数。以下语句提供“tuffy”、“papillon”、5、“white”作为这些参数的值: ``` Dog tuffy = new Dog("tuffy","papillon",5, "white"); ``` - 执行该语句的结果可以表示为:  **注意:**所有类至少有**一个**构造函数。如果一个类没有显式声明,Java 编译器会自动提供一个无参数构造函数,也称为默认构造函数。这个默认构造函数调用类父类的无参数构造函数(因为它只包含一个语句,即 super();),或者如果类没有其他父类,则调用*Object*类构造函数(因为 Object 类是所有类的父类,直接或间接)。 ### 创建类对象的方法 java中创建对象有四种方式,严格来说只有一种方式(使用*new*关键字),其余内部使用*new*关键字。 - **使用 new 关键字:**是 Java 中创建对象最常见、最通用的方式。例子: ``` // creating object of class Test Test t = new Test(); ``` - **使用 Class.forName(String className) 方法:**在 java.lang 包中有一个名为 Class 的预定义类。forName(String className) 方法返回与具有给定字符串名称的类相关联的 Class 对象。我们必须为类提供完全限定的名称。在此 Class 对象上调用 new Instance() 方法时,将返回具有给定字符串名称的类的新实例。 ``` // creating object of public class Test // consider class Test present in com.p1 package Test obj = (Test)Class.forName("com.p1.Test").newInstance(); ``` - **使用 clone() 方法:** clone() 方法存在于 Object 类中。它创建并返回对象的副本。 ``` // creating object of class Test Test t1 = new Test(); // creating clone of above object Test t2 = (Test)t1.clone(); ``` - **反序列化:反**序列化是从文件中保存的状态读取对象的技术。 ``` FileInputStream file = new FileInputStream(filename); ObjectInputStream in = new ObjectInputStream(file); Object obj = in.readObject(); ``` ### 仅通过一种类型创建多个对象(一种好的做法) - 在实时中,我们需要不同方法中的类的不同对象。创建多个用于存储它们的引用不是一个好习惯,因此我们声明一个静态引用变量并在需要时使用它。在这种情况下,内存的浪费较少。不再引用的对象将被java的[垃圾收集器](https://www.geeksforgeeks.org/garbage-collection-java/)销毁。例子: ``` Test test = new Test(); test = new Test(); ``` - 在继承系统中,我们使用父类引用变量来存储子类对象。在这种情况下,我们可以使用相同的引用变量切换到不同的子类对象。例子: ``` class Animal {} class Dog extends Animal {} class Cat extends Animal {} public class Test { // using Dog object Animal obj = new Dog(); // using Cat object obj = new Cat(); } ``` ### 匿名对象 匿名对象是实例化但未存储在引用变量中的对象。 - 它们用于立即调用方法。 - 它们将在方法调用后被销毁。 - 它们被广泛用于不同的图书馆。例如,在 AWT 库中,它们用于在捕获事件(例如按键)时执行某些操作。 - 在下面的例子中,当一个键是按钮(由 btn 引用)被按下时,我们只是创建 EventHandler 类的匿名对象来调用 handle 方法。 ``` btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println("Hello World!"); } }); ``` 文章版权声明:注明蒲公英云原创文章,转载或复制请以超链接形式并注明出处。
相关 Java 中的类和对象 Java 中的类和对象 类和对象是面向对象编程的基本概念,它们围绕现实生活中的实体展开。 班级 类是用户定义的蓝图或原型,从中创建对象。它表示一种类型的所有对象共有的一... 朱雀/ 2021年08月14日 09:53/ 2 赞/ 10772 阅读
相关 Java 类和对象 类和对象关系: 写编程语言,就是为了模拟现实世界的事物,实现信息化。比如:去超市买东西的计费系统,去银行办业务的系统。 如何表示一个现实世界事物: 1. 属性 就是该事 素颜马尾好姑娘i/ 2022年01月27日 12:57/ 0 赞/ 487 阅读
相关 Java对象和类 为对象定义类 对象:现实世界中可以明确标识的一个实体。每个对象都有自己独特的标识、状态和行为。 状态:又称特征、属性,是由具有当前值的数据域来表 待我称王封你为后i/ 2022年05月21日 10:53/ 0 赞/ 295 阅读
相关 Java类和对象的概念 Java是一门面向对象的编程语言,理解Java,首先要理解类与对象这两个概念。 Java中的类可以看做C语言中结构体的升级版。结构体是一种构造数据类型,可以包含不同的 r囧r小猫/ 2022年05月24日 08:42/ 0 赞/ 350 阅读
相关 Java 对象和类 Java 对象和类 Java作为一种面向对象语言。支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 逃离我推掉我的手/ 2022年06月03日 09:15/ 0 赞/ 268 阅读
相关 Java 对象和类 Java 对象和类 Java作为一种面向对象语言。支持以下基本概念: 多态 继承 封装 抽象 类 对象 实例 方法 淡淡的烟草味﹌/ 2022年06月04日 00:58/ 0 赞/ 264 阅读
相关 java学习中对类和对象的理解 经过我个人的学习我认为这句话非常重要: 对象是类的具体,类是对象的抽象。 对象就是你创建一个变量,这个变量有什么功能,有哪些属性。比如说你 一时失言乱红尘/ 2022年06月12日 09:36/ 0 赞/ 214 阅读
相关 Java中的类和对象 Java中类和对象和C++中类似,只不过在具体使用的时候有几个地方需要额外注意的。这里我列出来,几个主要的,后面如果发现了,或者理解更加深入了,再添加。 这篇博 冷不防/ 2022年08月07日 04:46/ 0 赞/ 227 阅读
相关 python中的类和对象 一、类和对象 1. 类和对象和概念 类:共性事物的抽象,是对某一类具有共同事物的描述,是具有相同属性和方法的集合 对象:类的实例,是共性事物的一个体现,是这类 ゞ 浴缸里的玫瑰/ 2022年10月12日 01:27/ 0 赞/ 245 阅读
相关 Java 对象和类 创建对象 对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步: 声明:声明一个对象,包括对象名称和对象类型。 实例化:使用关键字n... 小灰灰/ 2020年05月20日 13:37/ 0 赞/ 1941 阅读
还没有评论,来说两句吧...