大家应该都听说过,Java的一门面向对象的语言,而什么是面向对象呢,就是有的兄弟有对象,然后为他的对象开心,来设计程序(纯属扯淡),但是你细品,好像还真他妈是,我们不就是为了让别人开心(方便)才要设计程序啊。但是这个是我们全部计算机设计的初衷,而这个和Java是一门面向对象的语言,没有关系,我们的面向对象的意思,就是假如你要洗衣服,我们要先泡衣服,泡个半个小时,然后把衣服拉起来,刷,放下去,拉起来,一直重复到,洗干净了。这样我们才洗完了衣服,但是具体这个我们要怎么刷,怎么拉起来,和放下去,就是看你心情的,而我们要把这样的过程用程序实现(这个就是我们之前的c语言写的,这些过程要我们自己去写,),Java的面向对象,就是我拿把衣服丢进洗衣机的实现过程(我们把这个动作拆分,一共有我,衣服,还要洗衣机)在Java里面的写法就是,我把衣服丢进洗衣机,而洗衣机这个东西在Java的生态里面会有,而这样的表现形式其实就是一个简单,一个复杂一点(点外卖和自己搞饭的区别)。
那外卖现在就来聊一聊类和对象,因为我之前学了c语言,而我是一个喜欢对比学习的人,所以后面我大概会那Java和c了对比,其实类就是一个结构体plus,外卖在c语言的结构体是怎么样的,大家回忆一下,就是一些基本元素int啊,double啊之类的全部放一起。而外卖Java的类既然都说了是plus那这些肯定是支持的,而高配的高配在,他不仅有这些基本元素(属性)他还可以放一些方法(函数)下去,就比如,你要写一条狗,你在c语言的里面只能写这条狗,叫什么吊名字,有多长,但是在Java里面你就可以写这个狗怎么叫,这个狗在干嘛,,你甚至可以写,这条狗拉屎,这些只有你们想不到,没有我们做不到,但是活跃的网民就会说了,我在c语言里面,我表示可以在结构体外面调用这个结构体,一样可以做到让这条狗拉屎,虽然说这样做的可以的,但是Java这样的表现形式是更加直观的,你想一下,假如你手上有很多钱,但是你随便在家里面乱丢(如果你丢外面的话,记得告诉我你喜欢丢哪里啊)那这样你突然要用钱的时候是不是非常难找(但是也有好处,就是你可能干点什么,就可以在家捡钱,给生活添加乐趣)。外面把相关的东西放在一起我们有一个专业的名词形容它叫内聚性。而Java的写法就是内聚性更高,我们后续理解起来也会更方便,更不容易出错。
类的创建还要一个要点就是一些基本的元素,我们要创建哪些元素来定义这个类呢(按上面我们创建的狗来说,就是我们需要狗的上面元素来表示这个类呢)这个就要讲到抽象和具体。
就比如这条狗,你看着觉得抽象吗,反正我感觉不抽象,但是他是抽象的吗,也不一定(绕口令),而这个狗到底抽象不抽象,就需要看我们对于它的要求了,假如说你需要知道这条狗大概是什么品种,这个图就可以看出来(那它就是具体的),假如我们要知道这条狗有几个狗朋友,那这个图就是看不出来的(那它就是抽象),那我们要怎么知道这个狗有几个狗朋友呢,可能要线下见面才知道了,所以一个东西的抽象与否,要看我们的需要。这样的表示,应该可以理解的,但是这样的表示,我感觉是不满意的,所以我们还要进一步看看抽象的本质,其实我们看一个东西是否抽象,在现实中,我们的刻板印象是有没有图片(我是这样认为的)而从抽象到具体我自己发为了几个过渡阶段,第一是听别人说,就是在别人说的基础上,我们开动自己的脑瓜,来想象,说实话就是靠我们自己的想象力,第二是看到别人的画(其实这个画,也有细和粗,我就不展开了)其实这种都还好一点,我们还是可以知道一个大概的轮廓的,第三就是拍照(拍照其实也可以算第二里面的)我个人基本看到了图片就可以粗略的认为是具体了,因为我们对这个物体基本属性都可以看到,第四就是最后一个阶段(就是线下见面了,你什么都可以知道了,我就是字面的意思啊,没有深层的意思)。我们在从第一阶段到第四阶段,其实就是一个细节不断增加的过程,细节的不断增加,就会让这个东西不断的接近现实,就比如我们的地平线游戏和一些内存小的赛车游戏对比,我们一开始就是只有一辆车,我们会觉得很假,一眼就可以看出来,而我们为了增加游戏的体验感,我们加上汽车的影子,在不断的完善细节,一直做到现在的地平线5和现实基本看不出差距(这个就是一个抽象的东西不断的增加细节从而变的具体)我们类的创建也是这样,但是我们具体把细节完善到什么地步就要具体问题具体分析了,比如,我们要给做到好的人发钱,我们就需要知道这个人的业绩怎么样,还要这个人叫什么,还有最重要的银行卡号,而这几个属性就基本可以完成我们对他的考察,假如我们要组建一个王者荣耀的战队来比赛,我们的需要看的属性就完全不同了,
我们说完了类现在聊一聊对象,对象其实就是我们类的具体例子,就比如我们创建了一个类叫dog,我们就可以用dog来创建dog1,而dog1就是dog的具体例子,就像我们在游戏里面,类就相当与你要制作某个东西的图纸(蓝图),而我们使用这个蓝图就可以做出这个东西(但是对于计算机来说是无材料制作,就是有图纸就可以做),让我们看看具体的代码
聊完这些,我们对于类和对象,就有了一个大概的理解了,就是大概把他们的定义和最简单的用法理解了。
this关键字
this这个关键字表达的意思就是它本身,叫这个。
就比如出现这种情况,我们定义了year,mouth,day,和我传参的时候变量名一样(当然你搞不一样也是可以的,就怕身不由己),this就是代表我们创建的变量。
this.year就是表示我们创建的新变量的year = 我们传参传进来的year。很简单吧,额外提一句,this其实在很多时候都会用到,但是我们可以省略。
现在我们就开始聊一聊初始化,其实你看就上面这个this。year的图片,是不是就感觉想是给我们的Date一个值,而这个值可以是任何的值,假如我们把这个值设定为初始值,那我们要怎么设置呢,而把这个值设置为初始值的操作,我们就叫为初始化,而我们把初始化有三种,一。就地初始化,就是我们在定义的时候,就直接把他的值赋进去
二,代码块初始化
三,就是我们最常用叫构造方法
就是我们再创建一个新的像方法一样的东西但是不是方法的写法,但是大体一样,就是不要写返回值,
就是这样,而后面的和我们写方法的写法一样了,就是
但是要提一句,就是我们在没有任何初始化的时候,计算机会自动生成一个构造方法就是不传任何参数,也没有任何语句。