什么是类什么是对象?
类 ——是一个抽象笼统的概念 描述了一类具有相同特征行为的集合
对象——是一个具体的事物
例如:
人类(类) 和 热心市民周先生(对象)
人类是一个抽象的概念:
人类有 名字、有年龄、有性别 ---静态描述的特征(特征)-----属性
人类能 吃饭、能说话、能学习 ---动态的动作行为(行为)-----方法
周先生是个具体的人:
周先生 有名字 有年龄 有性别
能吃饭 能说话 能学习
周先生出生时就拥有 特征 即 属性 这是他的被动技能 比如他是个男的
周先生还有一些可用可不用的 行为 这是他的主动技能 比如他可以吃饭睡觉
在现实中现有对象才有的类,而在计算机中则恰恰相反!
此时我们创建了一个类,有姓名性别年龄这是它们的属性也是它的成员变量,还有阅读和吃饭这两个方法这是它的成员方法:
但是要注意如果我们此时直接new一个Person出来由于没有对属性进行初始化String类型会默认为null,int则会默认为0:
某些情况下,我们是无法接受null或者0这种默认值的,就像在我们出生时是一定会有姓名性别年龄这些东西的,所以new出的这个Person也应该具有具有这些属性。
这时我们可以修改一下person类,直接赋予他们值,这样我们再次调用它们的时候,它们就会打印出我们赋予的值
但是我们平时由于各种原因很少使用这种赋值方式,比如我们这个Person类,看似成功赋值了但是仔细推敲一下就会发现这种赋值方式并不适用于这个类
因为每个人的姓名性别年龄都不一定是相同的,今天你调用这个类想获得一个name为"张三"的对象,明天可能就想获得name为"李四"的对象,这是这个类显然就不行了。我们不可能再重新定义一个专门为创建"张三"、"李四"又或者"王五"的类那样这个Person就没有意义了。
我在此简单的介绍两种常见方式:(另外说一下类的成员变量也可以叫做类的 属性)
1.构造方法赋值:我们可以在构造方法中为成员变量赋值
此时我们又有了一个新的问题构造方法究竟是什么?
对于这方面不清楚的可点击这个 构造方法
我在此简述一下:
(1) 构造方法只在新的对象创建时执行
(2) 构造方法与类同名
(3) 每个类都有默认的无参构造,开发者也可以根据需要自行编写构造函数,但在编写有参构造同时,请尽量编写无参构造,以免出现不必要的错误,且尽量不要在构造函数中书写与逻辑有关的操作
构造方法中为成员变量赋值,需要先在类中创建有参的构造方法,同时在创建此类的对象时需要将需要的参数传入
以这种方式进行赋值,想要什么传什么,无论是“张三”、“李四”还是其他的东西都可以通过这个类来进行创建。
2.调用set方法为成员变量赋值:
这是可能会有人想问什么是set方法,这和java中的其他方法有什么不同么?!
首先set方法是什么?
答:其实它和其它普通的方法并没有什么不同,set方法是代码中对进行某一类操作的统称(set可以理解为:设置)这只是一种命名的方式;
这对于有过编程语言经验的人来说无需多言,但是我还是想简述一下这方面的知识;
简述命名:属性和方法的命名,基于我上面所说的,属性可以理解为 特征,方法可以理解为 行为,因此一般情况下 在创建一个方法时可以以 动词+名词·的方式进行命名,创建属性时可以直接使用 名词 进行命名
很常用的有:get、set、add。。。
我们先来创建set方法
idea中为我们提供了一些便捷的方式,直接敲set就会出现如下的选项
也可以 ALT+INS,选择Setter,然后在下面的选项中选择要添加的set方法
在我全选后,idea就直接为我创建了这三个set方法
这时我只要在创建对象(new Person())后,调用这些方法,就可以为它们赋值了
此外注意,如果定义的方法有参数要求,那就一定要传入参数,且类型一致否则编译都不会通过
此外的此外我还要说,很多时候类中的属性是私有的(即被private修饰的)
这是我们是没办法用 对象.属性(myAaron.name)直接调用的
因此get方法在这种时候是非常有必要的