JAVA学习之——类和对象
前言
面向对象编程是一种根据具体某个物品(对象)而抽象出一个该类物品所具有的共同特征的一种思想。也是JAVA学习的重点和基础。以下将根据本人个人的学习与理解来总结一下“类和对象”这块的知识点,以便初学者更好入门。学生党第一次写博客,请各位大佬们多多担待,有错误也请及时指出。
对象和类
首先简单的介绍一下对象:
首先需要说的是“万物皆对象”这一概念。生活中所有的具体的物品实例都可以称之为对象。细到我们身边的一个鼠标,喝水用的一个水杯,这些具体的实例物品都可以称之为对象。
然后再简单的介绍一下类:
类可以理解为“类别”,即根据多个对象所抽象出来的共同特征而组成的类别。举个例子,比如说你家里买了2台车,一台是黑色的奔驰,一台白色的宝马。那么我们就可以根据这具体的2台车的共同特征
- 都有4个轮子
- 都可以跑
- 都有一个品牌
- 都有颜色
- …
等等的这些特征而抽象出“汽车”这个类别。根据对大量的实例对象的共同特征进行分析,我们也可以推测出所有汽车都有的这些特征,然后建立起“汽车”这个类别。
总结:
对象是具体实例,类是对象的模板。一个类可以有多个对象。同一类的不同对象与对象之间结构相同(即类的结构是一致的),数据不同(类中的具体数据不同,比如说车子的“颜色”这个特征不同)
JAVA类的建立思路:
首先对多个具体的实例对象进行观察分析,抽出这些其共同的部分,然后抽象并建立出具体的类。
类和对象的具体介绍
类通常用class关键字进行修饰,语法为:
class Student
{
//属性
//方法
}
属性:
属性是指类的对象所拥有的具体特征(通常是名词)。在上面的Student类中,属性可以是:姓名,班级,学号,性别等用来描述一个学生的具体信息的变量。
方法:
方法是指该类的对象所拥有的具体“行为”(通常是动作)。如一个学生可以吃饭,睡觉,打游戏等。
根据上面的分析整合可得如下代码:
class Student
{
//属性部分
String name;
int id;
//方法部分
void eat()
{
System.out.println("学号为"+id+"的"+name+"在吃饭");
}
void sleep()
{
System.out.println("学号为"+id+"的"+name+"在睡觉");
}
void playGame()
{
System.out.println("学号为"+id+"的"+name+"在打游戏");
}
}
好了,这样的一个简单的仅仅包括姓名、学号这2个属性,吃饭睡觉等行为的学生类就建立起来了。那么接下来的问题是怎么使用它建立具体的实例对象了。
建立实例对象的语法:
Student(类名) stu(对象名)=null;//1
stu=new Student();//2
首先我们来分析一下第1行代码:
用文字来表示就是:
类名 对象名=初始值;
这玩意是不是有点熟悉?看起来是不是跟刚开始学编程的:
int a=1;
有点像?
没错,当我们暂且把int看作类名,a看作变量名,1看作初值的话,这些都是可以一样的理解。不过强调一下,这只是为了入门方便理解可以这样想,当你学到后面你会知道这其实是不对的。毕竟int是基本类型,a也是基本类型变量,跟引用类型变量完全是2个东西,严格的来说是无法参与面向对象开发的(除非你把它变成包装类)。包装类知识介绍下次再说。
然后就是第2行代码了:
等号左边的stu是变量名。右边是创建一个新的引用类型变量的操作语句。当有了第二行代码时,才是将一个对象创建成功。
以上的1、2俩行代码也可以合成一行:
Student stu=new Student();
好了,有一点我们要明白的是,这次创建的对象知识个空的对象,也就是说只是有一个学生的“空皮囊”,他的具体信息(属性和方法)还啥都没有呢!如果这时候我们加个main方法。
class StudentTset
{
public static void main(String[] args)
{
Student stu=new Student();
System.out.println("我名字是"+stu.name);//对象访问类的数据时,要用对象名.你要访问的数据。
stu.eat();
}
}
这时可以看看输出结果,你会发现输出的是:
我的名字是null
学号为0的null在吃饭
这是为啥?不是说只有空皮囊吗?为啥没有赋值名字就输出null了,学号就输出0了?
是这样子的,java里的成员变量默认都会赋一个初值,其中引用类型的变量初值为null。基本类型的变量,如int的初值是0。
那么我们要怎么对类产生的对象实例进行赋值和访问呢?
最简单的方法就是用:对象名.成员名进行访问了(当然,后面有权限的情况时我会另外说)。
假设我要初始化为:学号为10086,姓名为张三 的一个学生我该怎么做呢?
就暂且先按照对象名.成员名=初值这个语句进行赋值吧!
class StudentTset
{
public static void main(String[] args)
{
Student stu=new Student();
stu.name="张三";
stu.id=10086;
System.out.println("我名字是"+stu.name);//对象访问类的数据时,要用对象名.你要访问的数据。
stu.eat();
}
}
这样就会输出:
我名字是张三
学号为10086的张三在吃饭
但是不得不说,这样子进行初始化还是很繁琐的,一般很少有人会这样来初始化。但是学习也是要由浅入深不是吗?后面的内容我下回再介绍吧!
总结
本次用我觉得最简单的方式介绍了一下基本类和对象的基本概念(当然还是入门级别的了),然后简单的提了一下对象的使用以及初始化操作。如果这篇文章能够有人看,并且对你们有所帮助的话我还是会尽量以后继续写下去的。说实话,这次的第一篇文章只是我心血来潮,突然想写写看来着,看看能不能对你们有所帮助吧!谢谢各位啦!