00:00
大家好,我是海波老师,面向对象的概念啊,已经给大家做了简单的介绍,那么接下来就给大家讲一讲Java中面向对象的相关语法。首先我们这里来创建新的章节,我们写上啊咱们的CHAPTER04,然后呢,我在这边点击右键选择new,选择Java class,我写上JAVA01,然后object,然后呢回车,回车以后呢,我这里写上啊咱们的面,然后呢,写上它todo,我们叫面象对象。那么什么是面向对象呢?我们前面讲了所谓的面向对象,它其实啊就是分析问题时。以我们的问题所涉及啊,涉及到是或物为中心的分析方式,所以这里的重点和难点就是在分析问题的时候,如何想办法把问题所涉及到的事或物提炼出来。那有的同学说了,老师啊,那是不是只要把事和物列出来就可以了,其实把事和物列出来只是分析的第一步,我们还要围绕着事和物做具体的分析,这就好比呢,我们小学的时候,老师让我们写作文,题目是美好的一天,如果你把这一天发生的事情呢,你逐个描述一下,比方说我几点起床了,我几点吃饭了,我几点又闭上眼睡觉了,那这么写的话,其实也是没有问题的,谁说这就不是美好的一天呢,对吧?但是我相信这样的作文呢,他的评分呢,应该不会很高,因为啊,在我们语文老师的眼里呢,这样的作文呢,就纯粹属于是什么流水账作文对吧,那怎么写才会好一些呢?一般啊,写这样的作文,我们就会以一件。
01:34
自请为中心,然后将这件事情的相关信息呢给它设计好,比如时间对吧,比方说周六的早上,那地点呢,我们去长城,那人物呢,我和我的朋友,我的同学对吧。还有环境和天气等等了,对不对?将这些东西呢,都融合到我们作文当中,然后呢,再用好的文笔呢,稍微的润色一下,那我们的作文分数啊,不就会提高了吗?这就是一种套路,其实我们开发程序时啊,也是有套路的,如果你只是把事和物列出来,那就显得有点太单薄了,如果能把提炼出来的这个事或物再详细的分析一下,比如他们都有什么样的特征,都有哪些行为和功能,他们之间是否存在的某种关系,这些其实啊,我们都是可以分析一下的,对吧?所以面向对象编程的难度啊,它相对于面向过程来讲其实会更复杂一些,但好就好在呢,这种面向对象编程的思考方式呢,它更贴合我们生活中的思考方式,所以虽然复杂呀,但是理解起来难度不大,在Java语言编程中,我们把这里的事或物呢就称之为叫对象,那么在分析问题的时候,首先就需要找到问题中所涉及到的对象,然后呢,以对象为核心分析这些对象对。
02:46
有哪些特征,哪些功能,如果有多个对象的话,我们还要分析这些对象是否具有共同的特征和功能。一般情况下,如果含有相同特征或功能的多个对象,我们会把它们归纳为某一类对象,比如猫啊、狗啊,我们就归纳为动物类,那如果是花呀草呀,我们就归纳为植物类。所以呢,在Java语法中啊,就存在了什么我们类和对象的概念,所以我们写成类啊和对象,哎,就是这个概念啊。那么类呢,就表示归纳和整理,类表示我们的归纳和整理。
03:22
那么对象呢?诶,对象它就表示咱们叫具体的事物对吧?事情或物体嘛,某一个对象呢,它从属于某一个类,某一类的对象呢,都应该具有相同的特征或相同的功能,或者相同的行为,那么接下来呢,咱们就来介绍一下类和对象的相关语法,在Java中啊,我们的类呢,其实叫class。这个呢,我们就称之为叫类。声明类其实就是声明class,那么它的基本语法结构,咱们这里写上一下,咱们叫基本语法结构,这里呢,它是这样写的,叫这是一个关键字,后面呢,跟着我们的类名,后面呢,再写个花括号,这个里面啊,其实就是我们类的主体内容,那么这个类的主体内容当中啊,就包含了它的特征,还有它的功能。
04:15
这里的class呀,是一个关键字,它用于声明类,那这里的类名呢,就是某一类对象的名称,这个名称啊,和咱们之前那个变量的名称是一样的,它也是标识符,所以呢,要遵循标识符的命名规则,这里啊,咱们就不重复了啊,但是有一点和之前的变量名是不一样的,就是我们一般情况下,我们类名的第一个字母呢,是要大写的,咱们之前呢,没有这样的要求,对吧?当然了,这个也是规范啊,这个是规范而不是规则啊,它违背了这个规范,并不会出现任何的问题,只是我们习惯性的把类名的第一个字母呢,会用大写来表示啊,那么这里的特征啊,其实我们有另外一个称呼,我们称之为叫属性。还有下面的这个功能呢,我们称之为叫方法。好了啊,我们简单的介绍了一下它语法,那么说着说着呢就有点饿了啊,咱们这里呢,就以炒菜为例,准备呢做一道菜吧,来做什么呢?哎,嗯,做个红烧排骨行不行啊?那么此实际上做红烧排骨这件事情就是我们现在要解决的一个问题了,按照面向对象的思考方式,我们现在就需要从问题中提炼具体的事物了,这里的事物啊,就是我们要做的菜,也就是红烧排骨,现在呢,我们就写上啊,我们的问题是做啊一道菜。
05:27
是我们的红啊烧排骨对吧?嗯,那么在Java中啊,我们的红烧排骨呢,就是一个我们具体的对象了,但是光有对象还是不够的,按照之前的分析啊,我们需要先将对象归纳为一个类,那么这里的红烧排骨呢,我们可以把它归纳为需要进行烹饪的菜呀,所以呢,我们就说一下啊,咱们写上菜是吧,这个呢,就是我们的一个分类嘛,咱们叫做类啊它然后呢,我们的对象呢,就是我们的红烧排骨,为什么?因为咱们具体要做的这道菜就叫红烧排骨,它属于菜这一类嘛,对吧?根据这个分析的结果呀,按照之前的语法呢,我们来创建一个烹饪的菜,我们写个class。
06:06
这个class呢,就是我们它的一个关键字,后面就要跟着我们的类的名称,我们就叫cooking就可以了,好同学们,我写个大括号,写完大括号以后,同学有没有发现我的这个名称,我写了一个大写的C,对不对?哎,就是我们前面说过的,这是一种习惯的写法啊,好了,同学们,那么类有了,那么接下来我们就需要构建一个具体的事物了,也就是说构建这个对象了,所以啊,我们这里需要把红烧排骨呢这个对象给创建出来,那我该怎么做呢?我们把这个步骤呢,我们写上一下啊来,我们写上todo啊,一要先声明类。对吧,我们刚才把这个cooking不就声明出来了吗?它就是我们要烹饪这个菜呀,然后呢,接下来我们写上啊,Todo我们的二,然后呢,创建对象啊,创建一个具体的对象,我们创建对象的这个语法是什么呢?好,我们在上面呢,接着写啊,它是我们类的语法结构啊语法结构,然后呢,接下来往下写啊来我们写上叫做创建啊创建对象的语法。
07:06
那么这个语法非常简单啊,我们直接new就可以了,什么叫new啊,新嘛,新的创建一个新的对象,那所以呢,我就写上它叫类名,然后写个小括号就可以了,这样的话呢,我的对象就能够创建出来,所以大家看一下,我这里就写上它,咱们叫做new,然后呢,我们叫cooking。我们这么写的话,就可以把一个对象创建出来,那么这里的new啊,我们说了就表示创建新对象的意思,后面跟着这个名称,就是这个要创建的对象所属的类型,咱们的红烧排骨不就纯属于这个菜吗?所以就把cooking给我写上,它表示我们当前创建的对象,它属于哪类啊?那么我们现在new完了之后呢,我们的对象就准备好了,但是同学们光有对象还是不够的,按照之前的分析啊,多个对象呢,它归纳为一个类,属于一类的,这些对象呢,应该具有相同的特征或功能,那么这里的特征啊,就是属性了,咱们接下来呢,就要分析一下这里有没有属性,那肯定是有的吗?为什么呢?因为别的不说,每道菜不都应该有一个名字吗?所以呢,在cooking当中啊,来我们说一下,咱们叫特征,这个特征呢,其实就是我们所谓的属性。
08:17
那么每道菜都会有名字,对不对,所以呢,咱们这里呢,就有一个名字啊,有一个名字,那除了名字以外还有别的特征吗?还有啊,不同的类型的菜,它的那个菜系不一样吧,是不是?所以呢,我们写上它啊,咱们叫菜的类型,菜的类型,哎,好了,那么还有呢,就是我们的食材和那个佐料了,所以呢,我们写上它啊,咱们叫做石材,还有一个我们写上它啊,咱们叫做佐料,嗯,好了。光分析出属性来还不够啊,还需要用语法来实现它,那属性的语法是什么呢?Java中类的属性啊,其实就是类中声明的变量,我们这里也写上啊来写上突do啊三然后呢,叫声明属性,所谓的属性它其实就是我们类中的变量,所以属性的语法呢,和变量的语法呢是非常类似的,咱们来看一看我们变量的声明呢,是我们变量的类型,然后呢,再加上我们的变量的名称,它等于什么呢?我们的变量值对吧?OK,那么我们的这个属性啊,其实啊就是这样的,咱们叫属性类型,以及呢叫属性名称,还有呢,我们后面就叫属性值,所以啊,咱们这么写就行了,这里的语法呀,并不完整,咱们后面呢,再详细的来讲就可以了啊,行了,咱们把这几个分析出来的这个属性给它写上吧,第一个呢,我们叫name啊,我们写上它,咱们叫做string,对吧,给它一个name,然后这个时候呢,我们直接给个分号,哎,老师呀。
09:45
你这里为什么不给他个属性值呢?这个name幕呢,我们先不给它属性值是因为啊,名称是菜的属性,但是每一个具体的菜的名称是不一样的,所以呢,我们这里先声明,但是我不给它赋值是这样的啊好了,第二个呢,是菜的类型,我这里写上咱们叫军,我们就叫tap就行了,好了,写完了以后呢,我们这里的菜呢,我们就是红烧了,那所以呢,我就给它写上它啊,咱们属于红烧系的啊,咱们来我们写上它诶就可以了,好了,写完了以后啊,那么我们再来,我们下面的食材呢,我们就来写上它了,我们写上石君啊,咱们叫food啊行了。
10:20
然后呢,每道菜的食材呢,它也不相同,所以呢,我们这里呢,也先不给它赋值啊,然后呢,我们这里呢,刚才忘了加分号结尾啊,行了,那么接下来呢,是我们的佐料啊,咱们的release啊,所以呢把这个拿过来写上它,哎,好,然后呢,我写上啊,咱们等号,咱们这个佐料啊,咱们就是每道菜呢,这种红烧的菜啊,基本上都大同小异啊,所以什么大料啊花椒什么的是吧,我就写上一个大料就可以了,意思意思。所以呢,我就写上一个大料,嗯,好了。有了属性啊,咱们就可以通过之前创建的对象给这些属性赋值了,所以呢,大家可以看到我们刚才呢,就有一个我们的对象啊,叫做cooking,但是呢,你得给它起个名字呀,那么这个名字不就是我们的name的一个属性吗?所以呢,我们写上一个点,我们叫做name,它等于啊我们就叫红烧排骨啊,红烧排骨对不对,我们想做的这道菜不就叫红烧排骨吗?这里的等号呢,就表示赋值,我把我的这串呢赋值给当前的name属性,它表述的是一个具体的菜,这个菜的名字叫红烧排骨,你看这不就是用面向对象的方式来做了一些操作嘛,对吧?好,那么这个咱们已经写完了,那么类型呢,和我们的这个叫佐料呢,我们都是一样的,这个不用改,但是呢,你的食材是不一样的,所以呢,我们接下来来写,我们叫做new,咱们叫做cooking啊来,然后呢,写上一个点,我们叫food,咱们的这个红烧排骨,那么我们重点就是排骨了呀。
11:47
那么食材呢,就是排骨对吧。好了好了,我们现在就写完了,写完了以后啊,大家会发现这么写好像不太对,不太对的原因在哪里呢?是因为我们前面讲过了,我们这里的new啊,是用来创建对象的语法,那么也就意味着你的一个new呢,就会创建一个对象,你再来一个new呢,就会创建第二个对象,那你这里就不是一道菜了,你这里不就是两道菜了吗?诶老师呀,那怎么办呢?你刚才给内附了个值,那么现在你这个食材呢,现在是排骨,你怎么去点啊,对不对,你点不了啊。
12:22
那你的这个食材你怎么给它设定呢?所以这个时候呢,我们就需要注意了,在这种情况下,我们想对同一个对象的不同属性进行操作的时候,我们需要把这个对象的用一个变量来引用它,那所以呢,我就有一个变量的类型,这个类型呢,其实就是这个对象的类型,然后呢,我写个cooking,我再写个C,我再等于一个new,我们叫cooking,你这么写就可以了,你这么写了以后,等同于创建了一个对象,然后呢,用一个变量来引用它,你引用它以后,那么这个时候呢,我们的c.name诶,我这么写就可以了,然后呢,我再写上一个C,点我们的负的就没有任何的问题。哎,老师这个怎么理解呢?这个给大家解释一下,在咱们的面向对象当中,我们的所谓的对象和变量的关系是这个样子的,我们这里呢,就会有一个对象,所以我们写上它,咱们就叫做cooking。
13:15
好了,然后呢,把这个呢,我们拉大一些,好拉大以后呢,大家可以看到我现在给它一个绿色的,那么然后呢,我在我左边的这个位置呢,给它个小方块,小方块当中啊,就会分配一块内存空间,给它一个变量啊,那么这个变量呢,我给它起个名称,我们就叫做C啊,我们就写上叫cooking啊,咱们就写上叫cooking c就可以了,诶行了,你写完了以后,同学们,那这个时候呢,我的箭头就应该指向我当前的cooking,就是这个意思,好,你把这个指过来,你指过来以后就说明我当前的这个变量呢,就指向了这个cooking,哎,就是这个意思,哎,老师呀,那如果是这个样子的话,那我当前我对cooking的这个C做操作的话,是什么意思呢?很简单,当我们对这个变量C进行处理的时候,其实并不是对这个变量做处理,而是对它引用的这个对象做处理,所以呢,C点内其实就是指向了这个绿色的这个cooking,同样道理,C点负的也是指向同一个对象,那这样的话就不会有任何的问题啊。
14:16
所以这里就是我们所谓引用的概念啊,不过补充一下啊,这里提到了引用,咱们前面说过Java的数据类型啊,分两种,一种呢叫基本数据类型,一种呢叫引用数据类型,这种可以被引用的对象数据类型呢,就称之为叫引用数据类型,这里我们也写上一下啊,来说一下咱们叫引用数据类型,基本数据类型啊,它不是对象,所以呢就不是引用数据类型,这个咱们稍微的注意一下就行了啊好,同学们属性已经分析完了,那么接下来呢,咱们再分析分析有没有共同性的功能,那当然有了,所有烹饪的菜不都应该有烹饪的过程吗?这里的烹饪的过程就是功能或行为,在加法语法中我们就称之为叫方法,所以我们接下来呢,就准备突do啊四我们叫做声明我们的方法好了,那么方法的语法结构是什么样的呢?我们也来给大家写上啊,来写上它我们叫做WHY啊,一个关键字,然后呢是方法名,还有呢,写个括号里面呢写上。
15:16
参数,那么后面写上一个大括号,里面写上功能代码,嗯,好了,和之前的那个属性一样,我们这里的方法的声明语法呀,并不完整,我们后面统一来讲啊,那好了,同学们,我们现在有这样的一个语法了,我们就来参考它一下,我们给这个cooking呢,我们增加一个方法,我们写上一个VO,然后写上一个叫execute,表示执行的意思。对吧,咱们的ecute在这里呢,我就把这个烹饪的步骤呢,给它稍微的写上一下啊来,我写上它,咱们叫做打印,诶好打印以后呢,我写上它,我们叫做准备啊食材好,然后呢,再来我们叫准备佐料诶好,然后呢开始烹饪对吧?开始烹饪我简单一点啊,咱们的这个烹饪诶好,接下来呢,我们叫做烹饪完成行了,我们这么写完以后,功能不就添加完了吗?那接下来我们就可以开始烹饪了,如果想要执行这个方法呢,它也需要一个特定的步骤啊,所以咱们这里说一下来写上它啊。五我们叫做什么呢?叫执行方法,执行方法的语法呢,比较简单啊,直接写上我们叫做对象点,然后呢方法名,然后写个括号就可以了,这个呢,我们就可以执行我们对象中的方法,我们这里的对象不是在这里用C来引用了一下吗?所以我就写上一个C,我们叫做点,它里面有个叫execute,这个呢方法呢,就是我们刚才的方法名呢,它也是一个。
16:41
标识符啊,也要遵循标识符的命名规则,然后后面呢,就加个括号就行了,你这么写完了以后,我在这一行创建对象,在这两行呢,给我赋值属性,在这一行呢,执行我的烹饪过程,那现在我运行一下看结果运行运行以后看结果呢,你会发现没有任何的问题,我们在控制台上准备食材,准备佐料,开始烹饪,烹饪完成,你看这不就行了吗?但是呀,你这个过程呢,我好像看不到这道菜是什么样子的,那怎么办?我刚才给大家准备的什么食材呀,什么佐料啊,就应该应用在我们烹饪的过程当中,对吗?所以呢,我们把这个改一改,怎么改一下呢?我们准备食材,那准备什么食材啊,我把那个加加上这个地方,我们用到字符串的一个拼接操作,用了一个加号,这个加号可以把字符串拼接在一起,就是连接的意思,我把这个负的哎拿过来,咱们的食材不就是它吗?那我们准备佐料,诶佐料是什么呀?我们再来写个加号,我们把我们的release把它拿过来,诶好了,那么我们。
17:41
开始烹饪,我们的烹饪完成,这个烹饪完成呢,我把咱们名称拿过来。我们写上它,诶好了,行了,同学们,我把我们当前的这个方法里面的执行过程呢,跟我的属性呢,关联在一起了,我再给大家去执行我的烹饪运行。运行以后,大家会发现我准备的食材是排骨,准备的佐料是大料,开始烹饪,红烧排骨烹饪完成,你看我把整个的这个菜的制作过程就已经写出来了,对不对?简单是比较简单了,恰恰体现了我们整个面向对象的过程,哎,老师呀,那如果我现在再来一道菜,那比方说红烧鱼有没有问题呢?其实我们只要再用new创建一道菜不就可以了吗?来,我们再创建一下,我们写上叫做cooking还是cooking啊,然后写上一个C1,等于new cooking诶,同学们看到没有,我又构建了一道菜好了,那么我们的这个菜的名字呢,我就写上C,点我们的name啊,等于我们写上咱们叫红烧鱼嘛,咱们叫红烧鱼。
18:41
那红烧鱼的话呢,不用说了,它的食材肯定是鱼嘛,所以把这个富的啊,咱们的食材我写上,把后面呢,我就写上它,咱们叫做鲫鱼,对吧?行了,那么食材也有了,我们的这些什么佐料什么都有的话,那我接下来呢,就准备我的C一点,我的excute,我们叫烹饪嘛,我现在呢,就可以开始烹饪了,来我运行一下看结果,运行以后看结果大家会发现我们当前的鲫鱼大料开始烹饪,烹饪完成红烧鱼不就做出来了吗?对不对,哎,所以啊,这就是我们一个面向对象的一种分析方式和简单的代码,编写好了面向对象的基本语法,咱们就先讲到这里。
我来说两句