00:00
那下面呢,我们来学习面向对象的最后一个部分高级特性,那首先呢,我们来看一个,呃,大家一直前前前几天有同学一直在问啊的一个问题,叫静态属性和静态方法的问题,同学们有可以看到在前面我们一直没有去讲解静态相关的,但实际上呢,静态大家都知道,我们在学Java的时候,我们感觉到最就是当静态东西一旦引入的时候,我们发现这个难度就一下变大了,因为静态属性和静态方法引入。它导致我们整个这个呃,面向对象的一些机制复杂度增加了,所以说呢,我现在先提出一个问题,先引出我们静态属性,好,首先看这么一个问题啊,现在以我们目前学的开的一个面向对象的知识的结构,你能不能完成?
01:00
什么问题呢?我提出问题主要引起大家思考。问题是这样的,说有一群小孩子在玩堆雪人。那么不时呢有小孩加入到这个游戏中,请问如何知道现在共有多少人在玩?请使用面向对象的思想编写程序解决。OK。同学们想一想,从目前我们学习的这个内容来看,你应该是不太好解决的。说老师我能够解决,我怎么解决不了呢?我在这个我定义,我定义一个小孩,那来一个小孩,我就把我就再定义一个全局变量,我在这个面函数定一个变量来一个,我加一个,来一个加一个,你这样做不是面向对象了,你因为你你定的这个,你一定要把这个变,就是统计这个人的个数也放在咱们的一个对象里边,那样才是面向对象嘛。对吧,你不能这样思考,说老师我这样做,我这样做呢,比如说有些同学可能想我这样来完成,注意啊,现在我们新建一个包包了。
02:06
我们新建一个。来,我新建一个我们的新的一个package,那么叫CHAPTER08。好,同学们想一想哈,目前假如我们这样来实现对不对,比如说我还用它来写对吧,我们来拿一个test child。Child game。小孩玩游戏。啊,说你要完成的问题,我可以这样解决。啊,当然有同学可能也是这么去想的,说要用这个来完成完成它,我们怎么做呢?对吧。以以我们现在的结构呢?有同学可能这样想,我定义一个child。我定义char的,好的定义一个char过后呢,我这里啊创建创建很多小孩。
03:00
小孩让他加入游戏,加入游戏每加一个呢,我这里定一个变量。我在定义定义,我再定义一个变量,比如说这个变量呢,我专门用来统计有多少小孩,比如说to number。等于零,那我那我这个地方通过它的这个变量来累积不就可以了吗。啊,理论上说实现这个功能是没问题的,你加来个小号,我把这个加加,但是你想一想这个total number这个位置很尴尬是吧,它没有在一个对象里面,而且即使你在一个对象,应这个对象这个类,这个变量应该跟我们差的应该有些关系,才是完美的一个解决方法。所以说我们现在用这个传统的方法来解决呢,应该是不太好使,传统方法就不太好使,所以说我这说了第一个观点啊,第一个观点,如果用传统方法,咱们。不好用,那怎么办?怎么办呢?来看,往下继续学习,问题已经提出来了啊,怎么办?
04:06
这里我提出了一个问题。传统方法不好。不好怎么办?怎么办?好,那么我们就引出了有个静态的一个概念。啊经的概念,我们来看一下是什么意思呢?首先我们简单的回顾一下Java是怎么来思考这个问题的。那么如果在Java里面去实现这个问题呢?其实挺简单,它是怎么做的呢?它有一个静态的方法或者静态属性。对吧,比如说我们要静态,静态方法就public sta什么什么什么写完了。啊,当然属性要做一个静态的呢,也很简单对吧,属性我们就是类似于这样子静态属性。静态属性你也可以这样去做,那然后呢,我来一个来一个人玩游戏,我就加进去,来一个人就加进去。所以说。Java的静态方法是可以这样去完成的,但是呢,有一个问题就是Java中的静态方法并不是通过对象调用的,而是通过类对象来调用的。
05:10
虽然有些同学说老师我这个静态的东西也可以啊,当作对象来使用啊,对象来调用,但是在开的设计者看来呢,他认为Java里面的静态这一部分不是。面向对象的,所以说在SKY里面呢,他拿掉了这个,拿掉了传统的这个静态属性和静态方法,那他怎么做的呢?请看这句话。在开了里面,静态的概念通过半生对象来体现,它怎么体现的呢?看我这里有几句话,开了语言是完全面向对象的,接及万物皆对象的语言,所以并没有静态的操作,即开中没有这种传统的啊静态的概念,那么为了但是为了能够跟Java语言交互。
06:03
因为什么要跟Java语言交互,因为我们要完美的融合在一起,因为Java里面有静态的概念,那他怎么做的呢?诶,开了设计者就设计了一个叫特殊的对象来模拟类对象,我们称之为类的伴生对象。称之为类的伴生对象,这个类,这个类的所有就是这个类的所有静态内容都可以放置在他的伴生对象中声明和使用。啊,这样我讲了这么多,可能可能大家还是非常的抽象,来我们来一个快速入门案例,好先把这个概念说清楚了啊,就说第一个,我们简单说了一下,Java抛出了一个问题,我们抛出这个问题过后呢,我们用这种呃,这种方式来解决,不完美。因为嗯,拟拟定的这个这个变量呢,显然不好,不算是一个面向对象的思思路来解决的,然后呢,我们回顾了一下Java的这个静态的概念和开的一个静态的一个初步介绍,好先截取一段视频。
我来说两句