对象的创建和初始化


前言

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


一、类和对象的关系

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

    例如:动物、植物、桌子、电脑、手机,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对象,就必须显示无参构造的定义。
  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值