【传智播客.黑马程序员训练营成都中心】
转载请注明出处
作者: 成都校区.皓月当空
类和对象的白话讲解
本文章作为类和对象的入门讲解,通俗易懂,很适合Java零基础的兄弟们阅读。
很多哥们在学习类和对象知识点的时候,都感觉比较难学,分不清什么是类什么是对象,接下来我就带大家一起来学一学,让大家学起来不是那么的困难。
-
1、什么是类
很多人对类的解释是这么说的,类是事物的属性和行为的集合,是一个抽象的概念。听起来确实很抽象,说了和没说也没啥区别。那到底啥是类呢?这里我就要先讲一个故事了。
故事:
话说,在古代,一个小男孩去神农架旅游,走着走着进了一个很深的森林中,突然,这个小男孩看到了不远处有一个很大的全身长满了毛发的猩猩,但是看起来就和人一样,行为不像猩猩,更像是人,后来小男孩回到了客栈,拿起笔和纸,写上了这样一段话:信的内容:
亲爱的小花,前些天我在神农架游玩,在深山处看到了一个奇特的动物,这个动物黑黑的,全身长满了毛发,身高有2米高,跳的很高,跑的也很快,不知道你听到我的描述之后,会不会对这个动物感兴趣呢?爱你的小明。以上的文字是信里的内容,那当小花收到这封信之后,会通过看小明写的这些文字,在大脑里就可以幻想出大概这个奇特的动物长什么样子了。其实小明在描述一类事物,这个奇特的动物可能不止一个,可能会有很多个,他们都有相似或者相同的外在特征,也都会跳,都会跑,所以这在我们现实生活中就被称为类。其实在JAVA世界中也一样。由于我们程序员要和计算机打交道,我们要和计算机进行沟通,如果我们想要描述一类事物的时候,我们不可能用语言说出来,计算机没那么发达,但是我们可以通过计算机认识的代码体现出来,这样计算机就可以知道我们要描述的事物是什么样子了,比如我们可以这样写:
class 野人 { //这类事物的外在特征:属性 int 身高; String 颜色; //这类事物具备的功能,行为 public void jump() {} public void run() {} }
这么写和小明写给小花的信差不多,当我们这么写完之后,计算机就认识了,就知道你要告诉它这个事物大概长什么样子了。这就是JAVA世界中的类。
如果看了以上的内容大家还是不懂什么是类的话,那我们可以问自己一个问题,就是我们为什么叫做做 人"类" ?大家可以好好的想一想,为什么我要叫做人类,而不叫做鸟类,鸡类呢?因为我们有相似或者相同的属性,也就是外在特征,我们也都具备共同的功能,比如说吃喝拉撒睡,所以我们都是人类,这个人类不是具体的谁谁谁,就是一个叫法,而在JAVA世界中,类就这和我们现实生活中的类是一样的,现实生活中有人类,那JAVA世界中,我们也可以写一个人类。
说了这么多,相信大家对类的理解应该又提高了一个档次,关于类的讲解就说到这里,接下来咱们来学习什么是对象。
-
2、什么是对象
刚才我们讲解了类,知道了类就是对一类事物的描述,并不是具体的指谁谁谁,那对象是什么呢?比如,如果说我们大家都是人类的话,那你,我,他,我们的每一个人,那就都是每一个对象,有100个人,那就有100对象,这100个对象都是属于人类。相比大家现在对对象也有了一定的理解吧。
-
3.怎么定义一个类
我们知道了什么是类,什么是对象之后,那在JAVA中,我们就要去写类,写对象,那怎么写一个类呢?
格式:
class Person { String name;//姓名 int age;//年龄 String gender;//性别 String xingzuo;//星座 String xuexing;//血型 //吃的功能 public void eat() { System.out.println("吃"); } //喝的功能 public void drink() { System.out.println("喝"); } //拉的功能 public void la() { System.out.println("拉"); } //撒的功能 public void sa() { System.out.println("撒"); } //睡的功能 public void sleep() { System.out.println("睡"); } }
说明:
class是用来定义一个类的关键字
我们在写某个事物的时候,要分析该事物有哪些属性和行为,属性在JAVA中就是成员变量,行为在JAVA中就是成员方法,我们在写一个类的时候,只需要把这个事物的属性和行为也出来就可以了。 4.怎么使用一个类
想要使用一个类,只需要创建该类的对象,我们使用对象就可以了。
就好比说让你去打一个人,你能去打人类吗?不可能,你应该去打某一个人,所以我们写完类,不能去使用人类,而是去操作具体的某一个人,也就是对象。
首先我们要写出一个类,然后使用类的对象,这次就拿猪类举例:
//描述类
class Pig {
private String name;//姓名
private int age;//年龄
private String xingzuo;//星座
public Pig() {}
public Pig(String name, int age, String xingzuo) {
this.name = name;
this.age = age;
this.xingzuo = xingzuo;
}
public void setName(String name) {
this.name = name;
}
public String getName() {
return this.name;//此处this可以省略,因为没有同名的局部变量
}
public void setAge(int age) {
this.age = age;
}
public int getAge() {
return this.age;
}
public void setXingzuo(String xingzuo) {
this.xingzuo = xingzuo;
}
public String getXingzuo() {
return this.xingzuo;
}
//吃的功能
public void eat() {
System.out.println("吃肉");
}
}
//测试类
class Demo {
public static void main(String[] args) {
//创建一头猪(创建对象的格式:类名 对象名 = new 类名())
Pig pig1 = new Pig("jack", 18, "白猪座");
//看第一头猪的属性和行为
System.out.println(pig1.getName());
System.out.println(pig1.getAge());
System.out.println(pig1.getXingzuo());
pig1.eat();
//创建一头猪
Pig pig2 = new Pig("tom", 19, "黑猪座");
//看第二头猪的属性和行为
System.out.println(pig2.getName());
System.out.println(pig2.getAge());
System.out.println(pig2.getXingzuo());
pig2.eat();
}
}