Java中的类和对象(1)

1.类和对象的理解

类是使用某种面向对象的编程语言(比如java),对一个实体对象进行的描述。可以理解为类是盖房子所需要的图纸,而对象是根据图纸建造出来的房子。图纸是对房子的描述,类是对对象的描述。

2.类的定义

使用关键字"class"定义,如下所示:

3.类的实例化

用类创建对象的过程,叫做类的实例化。类定义好了,那么建造房子的图纸就有了,现在可以根据图纸建造房子了。根据图纸建造房子的这一过程,就是类的实例化。

注意1:类定义好了,就是一种新的自定义的数据类型,而实例化出来的对象就是变量,根据自身的需求,使用该数据类型可以定义多个变量;

注意2:实例化完成后,可以通过”对象名.成员属性/成员方法“的操作调用成员属性和成员方法,进行赋值或者打印等操作。

4.this引用

为什么要有this引用,this引用又解决了什么问题?

当类的成员方法需要传递形参,而传递的形参和类的成员属性命名相同,这是需要使用this引用来进行传递,如下图:

这里成员方法的传递的参数和成员属性的命名相同,因此无法将值传递给成员属性,实际成员属性的值仍为0,0.0或者null,请参考以下运行截图:

那么this引用就是来解决这个问题的,在成员方法中使用this引用成员属性,如下:

运行结果:

发现原本想要传递的参数的值,已经成功传递进去了。

那么this究竟是什么呢,为什么加上this就能传进去?实际上在上述过程中,this就表示我们实例化出来的对象cn。定义类的时候,在成员方法中写上this就表示,以后的实例化过程产生的对象本身调用了自己的成员属性。这样就能够保证和形参区别开。

注意:这里的this只能在所在的类的成员方法中使用,不能跨类使用。

5.构造方法

构造方法是一个特殊的成员方法,通常用于类成员属性的初始化。它的名字必须和类的名字相同,在实例化对象时,由编译器自动调用,并且在该对象的整个生命周期内,只会被调用一次。

仅实例化对象时会被编译器自动调用一次,如下图:

构造方法的注意事项:

注意1:名字必须与类名相同;

注意2:无返回值类型;

注意3:实例化对象时,由编译器自动调用一次,在该对象的生命周期内,不会再被调用;

注意4:构造方法是支持重载的

注意5:如果用户没有定义构造方法,编译器会自动提供一个无参的构造方法

注意6:用户可以通过this调用其它的构造方法,调用时this语句必须放在第一条的位置,但是不能成环;

这里注意1~3都是比较好理解的,那么我们从注意4开始说明。

构造方法是支持重载的,如下图:

定义了一个两个参数的构造方法,方法名完全相同,区别于之前的三个参数,这次使用了两个参数,并且参数类型也是不同的。这就形成了构造方法的重载。

我们再使用这个构造方法实例化一个对象,如下:

打印结果正常,方法运行正常,说明构造方法的重载是成功的。

如果用户没有定义构造方法,编译器会自动提供一个无参的构造方法,这就是为什么我们在没有定义构造方法的时候,可以实例化对象却不会报错的原因。

一旦用户定义了构造方法,编译器将不再自动生成,如下图:

定义了一个参数的构造方法后,再使用系统提供的无参的构造方法后,出现错误。原因是自己定义了,系统便不在提供无参的构造方法。如果想使用,需要对构造方法进行重载。

用户可以通过this调用其它的构造方法,调用时this语句必须放在第一条的位置,如下:

如果构造方法中调用另外的构造方法,this不放在第一行,如下:

如果两个构造方法互相调用成环,如下:

  • 构造方法
  • this引用
  • 类的实例化
  • 类的定义
  • 类和对象的理解
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值