文章目录

  • 前言
  • 一、类和对象的关系
  • 二、如何创建和初始化对象
  • 1.使用new关键字创建对象
  • 2.对象初始化
  • 三、构造器

前言

本文主要讲解类和对象的关系,以及如何创建和初始化对象,对构造器的详解



一、类和对象的关系

  • 类是一种抽象的数据类型,它是对某一类事物的整体描述,但是不能代表某一个具体的事物。

    例如:动物、植物、桌子、电脑、手机,Person类、Car类等等,这些类都是用来描述一类具体的事物因该具有的特点和行为,是抽象的概念。

  • 对象是抽象概念的具体实例

    例如:李华就是人的一个具体实例,李华养的一只大黄,就是狗的一个具体实例。
    在这里,人是一个“类”,李华就是一个“对象”,同样,大黄也是一个对象,都不是抽象的,而是实实在在存在的。

二、如何创建和初始化对象

1.使用new关键字创建对象

1.首先创建一个类,我这里创建的是一个学生类,里面有学生的姓名、年龄。

public class Student {
String name; //姓名
int age; //年龄

2.类是抽象的,需要实例化,也就是创建一个对象,实例化后会返回一个对象,代码如下

Student lihua = new Student();
Student lihong = new Student();

我们就像这样new 一个对象,这里的lihua,lihong就是Student类的具体实例。

2.对象初始化

接着需要对对象进行初始化,如果不初始化,输出的数据将会是默认值,代码如下

lihua.name="李华";
lihua.age=19;
lihong.name="李红";
lihong.age=18;

看一下输出结果

System.out.println(lihua.name);
System.out.println(lihua.age);
System.out.println(lihong.name);
System.out.println(lihong.age);
李华
19
李红
18

完成初始化。

如果不初始化,我们来看一下运行结果

null
0
null
0



三、构造器

上面使用new关键字创建对象的时候,除了会分配内存空间和对创建好的对象进行默认的初始化之外,还会对类中的构造器进行调用。

  • 类中的构造器也称为构造方法,是在进行创建对象的时候必须调用的,构造器有以下两个特点
  1. 和类的名字相同
  2. 没有返回类型,也不能写void

Student类中什么也不定义,在主方法里面对Student类创建一个对象student

public class Student {

}
public static void main(String[] args) {
Student student = new Student();
}

发现即使类中内容是空的,在主方法中仍然可以调用出来Student类,为啥呢?

接下来我们在out 目录中找到Student.class文件,打开看一下

public class Student {
public Student() {
}
}

发现和源文件中的代码相比较,多出来一个public Student方法,这个方法 ,首先,它的名字和上面的类名相同,其次,它没有返回值。其实,这就是一个构造器。

对于无参构造和有参构造,代码如下

  • 无参构造
public class Student {
String name;
public Student(){
this.name="李华";
}
}
public static void main(String[] args) {
Student student = new Student();

System.out.println(student.name);
}

输出结果

李华
  • 有参构造

如果使用了有参构造,就可以让无参构造中的内容空着,它什么也不用做

//无参构造
public Student(){
// this.name="李华";
}
//有参构造
public Student(String name){
this.name = name;
}
public static void main(String[] args) {
// Student student = new Student();
Student student = new Student("李华");
System.out.println(student.name);
}

使用new关键字调用方法,由于方法可以重载,调用时会自动匹配到有参构造的方法,即调用上面的public Student(String name)

结果

李华

由此,我们可以得出一些结论:

  1. 一个类中即使什么也不写,它也会存在一个方法。
  2. 使用new关键字,本质就是在调用构造器。
  3. 构造器可以用来初始化值。
  4. 注意:如果定义了有参构造,还想用无参构造new对象,就必须显示无参构造的定义。



更多内容详见微信公众号:Python研究所

对象的创建和初始化_初始化