Java 什么是对象
在现实生活中,我们可以把桌子、椅子、灯等称为对象,因为它们具有一些属性和功能。我们可以说,任何具有属性或特性以及某些功能的东西都是对象,例如灯具有座和灯泡,并且可以点亮一个房间,所以它是一个对象。在Java中,我们也有对象,它们有自己的属性。对象基本上是类的实例,而类提供了创建对象的蓝图。让我们简要讨论一下对象以及如何在Java中创建对象。
定义
要掌握面向对象技术,您必须熟悉对象。面向对象编程旨在创建与实际世界类似的程序。它还强调数据的连接方式。有几个面向对象编程原则,其中之一就是对象。对象是一个具有自己独特特征和行为的实体。而类则是对象的蓝图。因此,类的实例就是对象。在本部分中,我们将讨论Java对象的定义语法。对象共享的特征如下:
- 身份 - 身份是用于唯一标识该项的特征,例如随机的ID号码或内存位置。简单的对象,例如灯,可能只有两种状态(打开和关闭)和两种操作(打开,关闭),但它们仍然有一个身份(例如,该项的制造ID)。任何外部用户都无法看到ID的实际值。这是JVM用于内部跟踪对象的方式。
-
状态 - 变量存储对象的状态(字段)。
-
行为 - 方法说明对象的行为。
如何在Java中创建对象
创建对象的步骤如下:
- 声明
-
实例化对象
-
初始化对象
创建对象的语法
声明
声明主要定义对象的数据类型。声明通知编译器,您想使用给定的名称引用指定类型的变量。声明的对象没有被实例化。使用new运算符创建一个Date对象或任何其他对象。
Class_name Object_name;
对象的数据类型始终是类的名称。
实例化
通过new运算符为新生成的对象分配内存。new需要一个参数,该参数由对象的构造方法组成。构造方法负责初始化新对象。换句话说,实例化是创建一个类的实例/对象的过程。它占据对象的初始内存并返回一个引用。一个对象的实例化在Java中充当类的蓝图。有两种实例化的方式:
- 使用new关键字 - 对于实例化一个类,Java提供了一个new关键字。让我们看看如何使用new关键字实例化一个类。
//declaring an object
Dog Mydog;
//Instantiating using new keyword
Mydog=new Dog();
在这里,Dog()是类的构造函数,它是一个非参数化的构造函数,即没有参数。但是,如果构造函数是有参数的,那么我们也必须初始化参数,例如,
Mydog=new Dog(2,Bruno);
让我们看一个例子以更好地理解。
例子
public class Dog{
int age;
String name;
Dog(int a, String n)//parameterized constructor
{
age=a;
name=n;
}
public void display(){
System.out.println(age);
System.out.println(name);
}
public static void main(String args[]){
Dog mydog=new Dog(12, "Bruno");//Object instantiation and object declaration
mydog.display();//object initialization
}
}
输出
12
Bruno
- 使用静态工厂方法 - 一个类也可以通过执行静态工厂函数来实例化。一个类可以提供一个公共的静态工厂方法,该方法是一个返回该类实例的静态方法。请始终注意它与工厂方法模式的区别。
让我们来看一个静态工厂方法的例子
例子
public class Dog{
int age;
String name;
Dog(int age, String name)//parameterized constructor
{
this.age=age;
this.name=name;
}
public static Dog mydog(int age, String name)
{
return new Dog(age,name);
}
public static void main(String args[])
{
Dog d=new Dog(23,"bruno");
System.out.println(d.age+" "+d.name);
}
}
输出
23 bruno
初始化
类包括构造方法以初始化新创建的实例。我们可以根据类声明中的方法名称和没有返回类型来识别构造函数,因为它们与类具有相同的名称。
有主要四种初始化对象的方法,它们是−
- 初始方法 - 概念是使用new操作符获取类的实例,并使用类的setter方法设置其值。
-
构造函数 − 使用new操作符创建对象时,必须指定构造函数。构造函数与类具有相同的名称,并且不返回任何值。它可以接受一组参数,这些参数是要为其设置值的字段,或者可以是无参构造函数。如果我们没有声明任何构造函数,编译器将自动生成一个。
-
拷贝构造函数 − 拷贝构造函数是一种特殊的构造函数,它从现有对象创建一个新对象。它只接受一个参数,即同一类的另一个实例。我们可以使用this()表达式直接在拷贝构造函数中执行另一个构造函数。
-
匿名内部类 − 使用“Double Brace Initialization”作为初始化对象的替代方法。这将在一个无名内部类中生成一个单个实例初始化器。强烈不推荐使用此技术。
结论
在本文中,我们学习了对象的含义以及如何创建对象。对象是面向对象编程语言的基本构建块。在开始学习Java之前,您必须熟悉对象的概念。类是对象的蓝图,因此我们可以说对象是类的一个实例。