00:00
大家好,我是海波老师,我们来继续学习Java面向对象中的相关语法,我们这里拷贝。我把这个呢改成我们的八,然后呢写个下划线啊,然后写个static,然后呢,我们点击OK,点击完成以后呢,我们把里面的东西啊,咱们全都给它去掉就可以了,那这里呢,我们给大家首先啊写上一个类,这个类的名字呢,我们写上class,咱们叫做Chinese中国人啊嗯,然后呢,我们写个花括号,我们在这个中国人当中啊,给他声明一个属性,每一个中国人都有自己的姓名,对吧?所以我写上一个string,我们叫做name就可以了,类创建好了,我在这里面呢,把这个Chinese呢,我们给它来创建一个对象,C等于new,然后Chinese,然后呢,我把我们当前的这个对象的属性啊,C点内我们给它附上值,我们写上叫张三就可以了。然后呢,我在后面呢,给他一个打印语句,我们写上叫hello空格,然后再加上我们c.name好了,我这么写完是什么意思呢?代码非常简单,我在我这一行当中啊,我构建了一个中国人的对象对吧?然后呢,把这个对象呢,复制给了一个C的一个变量,这个C呢就是一个Chinese的引用,然后呢,我通过这个引用呢,给我们内幕的属性附了一个字叫张三,因为这个引用啊,指向这个对象,就等同于我碰见一个人,他的名字叫张三,然后呢,我对他说了一声hello,你好对吧,你好张三就是这个感觉,所以呢,我现在运行一下,咱们看结果。
01:23
运行以后大家会发现没有任何的问题,对不对,叫hello,张三,诶老师呀,那你为什么不把咱们的张三我写在里面呢?你说你要写在里面的话,你这不就不用写了吗?同学们,记住面向对象的话,我们如果在类中生明属性是什么意思呢?记住类中生明属性是表示我们的这个类的所有的对象它的属性是相同的,但是你会发现我们的名称是吗?不是,咱们的名称是每个中国人都可能是不一样的,但是也有可能一样了,但是不是很多人都不一样啊,对不对?所以说你写在这儿是不合理的,你就应该你碰见一个人,他就有一个名称,对不对?应该是这个样子,哪怕你碰见两个人他的名称相同了,那其实也是没问题的,但是最起码你不能写在这个位置,对吧,这是我们需要了解的一件事情,哎,老师呀,那什么样的属性,我们在这会给他附上值呢?那比方说同学们,我写上一个这个东西叫string,我们叫nationality。
02:17
我们写上这样的一个属性,这个属性是什么意思呢?叫国籍呀。国籍,那我们的中国人的国籍,我们不都是中国嘛,对不对,所以我们这写上它,我们叫做中国,那所以呢,我这儿不用做任何的操作,同学们看一下,我在后面写上它,诶我们加上。我们写上一个它逗号,我们再写个空格,再加上一个C点,我们的nationality,诶这么写,写完了以后,现在我运行一下,我不用做任何操作,你的中国人,他的国籍就应该是中国,对不对,所以这里呢,Hello,张三,我们的中国没有任何的问题,对不对,当然了,你说你改国籍,那这个我就不管了,对不对,我们只是给大家演示这样的一种效果啊,这个大家能不能明白,我相信这个还是好明白的吧,对吧,只要咱们前面那个属性的含义你能明白的话,这个应该问题不大。
03:04
哎,老师呀,那有没有这种情况呢?比方说你没碰见个人,你给他起了个名字叫张三,啥意思啊,我们把这个给它注掉。我把后面的这个值呀,我给他一个now。咱们之前给大家讲过呀,这个那呢是一个特殊的关键字,表示空对象,对吧,对象为空,也就是说一个没有分配内存空间的对象啊,是一种特殊的关键字对象,这个代码呢,就变成什么意思了呢?就好比你眼前没有人,然后呢,你对着空气说你好啊张三,就这种感觉,你肯定不会觉得有什么问题啊,比方说可能啊,你在练习脱口秀,在背词儿呢,对不对,这也有可能啊,你不会觉得有什么问题,但是在外人看来是不是就会显得非常的诡异,咱们Java就是个歪人呢,所以他也会感觉诡异,所以它是不允许你这么做的,咱们运行一下,咱们看一下我运行,运行以后你就会发现出现了一个Java中非常经典的错误,我们称之为叫空指针错误,什么意思啊,很简单,咱们前不说了吗?如果给一个变量赋值的一个对象等同于这个变量引用的这个对象在底层,就好比用一个指针指向了这个内存中的对象,这个咱们之前不是演示过吗?但是现在你给这个变量一个,那就表示它不指向任何的。
04:16
地方,它如果箭头不指向任何的地方的话,那么也就意味着你没有办法去访问那块内存当中的某个属性,你是访问不到的,如果你访问不到,那不就会出现我们对应的错误嘛,对不对?所以这个就需要给大家去讲一下,所以我们当前的这个内幕属性啊,其实就是跟我具体的对象有关系,咱们对这种针对于具体对象声明的属性呢,是有特定的称呼的,所以咱们这里说一下。咱们叫针对于具体对象的属性,称之为我们叫做对象属性,或者叫成员属性,还有呢,我们叫实力属性。都是可以的啊,这个大家明白,他们表示一个意思就行了,那么之所以这么声明啊,就是因为每一个对象具体的属性值是不一样的,那么其实我们方法也存在同样的操作,也就意味着咱们的方法呢,它也有所谓的成员方法,对象方法和实例方法的感觉,所以咱们复制一下针对于具体对象的方法。
05:13
咱们称之为叫对象方法,或者叫成员方法,或者我们叫做实例方法,哎,这个其实都是对应上的啊,但是同学们有些方法可不是针对于具体的对象啊,比如我们一提到鸟啊,我们这里给它写上一个,我们叫做class,我们叫做bird,一提到鸟,你们能想到什么,是不是会联想到飞呀,也就是说只要是鸟就应该能飞,对不对?飞高飞矮我不管,飞远飞近我不管,就是能飞,对吗?所以飞的这个行为啊,和哪一只鸟是没有关系的,而是和鸟的这个类型有关系,但是呢,如果你在这个类当中,你写上一个,我们叫做wide,我们叫做FLY。对吧,然后呢,写上括号,括号以后你写上它叫做非没问题,可是记住了,同学们,你这么去写完以后,它表述的是具体的某个对象的行为,它表述是这个意思,也就意味着我在路上碰见一只鸟,诶,这只鸟能飞,那么也就意味着别的鸟还真就有可能不能飞,但是不对,我们认为啊,我们只要看到了鸟是不是都应该能飞啊,你甭管它飞高飞矮,不管它飞远飞近,它应该都能飞,对不对,所以飞的这个行为呢,和哪一只具体的鸟没有关系,而是和鸟的这个类型有关系,我们把和具体对象无关,只和类相关的就称之为叫静态,这里我们说一下。
06:34
把和我们对象无关。只和。类相关的,称之为我们的静态。诶,这个需要给大家去介绍一下,那么和类相关的属性就称之为叫静态属性,和类相关的方法就称之为叫静态方法,和类相关的属性称之为叫静态属性,好了,然后呢,我们复制一下我们说和类相关的方法,把它改一下。
07:05
方法我们称之为叫静态方法。好了。在Java中啊,静态属性和静态方法,它会使用一个特殊的关键字来写上它。静态语法,它就是在我们属性和方法前增加我们的static关键字,好了,那么大家可以看到我就在这个FLY的前面,我加上一个我们的static就行了,一个关键字叫static,诶,它就表示静态的意思,静态的话,那我该怎么访问它呢?这个时候呢,把这个给它注掉,注掉以后还记得吗?我们说过了,它和对象无关,也就意味着你是不用构建对象的。那如果你不构建对象的话,那我怎么去用它呢?诶,你和类型相关,那我就直接通过类访问就可以了,所以我的board呢,我直接点一下叫做点叫FLY,对吧,我这么写你直接运行,不用去new,直接就可以使用啊,所以这个我们就称之为叫静态的方法,同学们注意了,那同样道理呢,我们还有静态的属性嘛,比方说我写上一个static啊,我们写个词符串,我们叫做type啊,等于鸟,诶好了。
08:11
行了,写完了以后呢,那现在呢,我们就可以打印一下,咱们叫做word。然后呢,把它写上一个我们叫做tap,诶,你会发现通过类名直接访问没有任何的问题,好了,我们现在运行一下看结果你会发现飞啊鸟啊这些东西只要是静态的,我都可以通过类名直接访问,还是非常方便的,大家看一下我们这里的system,它就是通过类名直接访问的,我们不用看别的,我们把这个out呢,我点进去点有没有发现我们这儿就是一个static呀,同学们确实就是这样,我通过类名就可以直接访问,咱们Java本身也是这么做的,诶老师呀,那咱们之前的那个中国人的国籍,我们是不是也需要用static改一下呢?因为中国人的国籍不就是中国吗?那所以我们把这个改成static,这不就好了吗?原则上来讲啊,这么说是对的,但是生活中啊,每个人是可以改国籍的呀,对吧,所以每人是有权利更改国籍的,改完以后你还算不算中国人我不知道,但是也证明了这个国籍的属性还是和每一个具体的对象有关的,你可以改,对吧?
09:16
你也可以不敢,所以每个对象都有权利来做这个事情,但是我们这个鸟,它飞是肯定会飞的,对不对?你飞多高,你飞多矮,你飞多近,飞多远,我不确定,咱们生活中那个鸡你说能不能飞,它能飞对吧?只是感觉飞的比较矮一些是吧,飞的比较距离近一些,但它确实是属于鸟类啊,这个大家能不能明白,所以我们这里的国籍啊,还真不应该生明成静态的啊。好了,静态的相关概念呢,先给大家介绍到这里,后面呢,我们再给大家讲讲静态语法所需要注意的地方。好,同学们,我们静态的语法呢,咱们先说到这里。
我来说两句