骈拇

听百家讲坛的于丹讲庄子心得,听到一些不错的道理:

比如“小惑易其方,大惑易其性”。又比如“吾所谓聪者,非谓其闻彼也,自闻而已矣;吾所谓明者,非谓其见彼也,自见而已矣。”

心中一凛。遂查原文,品味之下有所得,不敢独享,与君共勉:

http://www.teachcn.net/zxyw/html/2003/1800.htm

我觉得每个中国的程序员都该来读一读骈拇这篇文章。了解一下庄子的思想。

为什么太多的程序员浮躁,找不到方向,看不到未来。

因为被俗世所迷惑,被房子车子所迷惑,太多地去和别人比较。“适人之适而不自适其适”

抄一段:

且夫属其性乎仁义者,虽通如曾史,非吾所谓臧也;属其性于五味,虽通如俞儿,非吾所谓臧也;属其性乎五声,虽通如师旷,非吾所谓聪也;属其性乎五色,虽通如离朱,非吾所谓明也。吾所谓臧者,非仁义之谓也,臧于其德而已矣;吾所谓臧者,非所谓仁义之谓也,任其性命之情而已矣;吾所谓聪者,非谓其闻彼也,自闻而已矣;吾所谓明者,非谓其见彼也,自见而已矣。夫不自见而见彼,不自得而得彼者,是得人之得而不自得其得者也,适人之适而不自适其适者也。夫适人之适而不自适其适,虽盗跖与伯夷,是同为淫僻也。余愧乎道德,是以上不敢为仁义之操,而下不敢为淫僻之行也。

Protected Attribute

一直以为Protected属性的方法就是不能被类实例直接调用而可以被类内的方法或子类的方法

以不指明实例的方式(或者说其实是省略了this指针)来调用的方法。有这个印象是受了private属性的影响,觉得

调用者总是本身才行,protected和private比只不过是增加了继承性,比如调用者还是必须是基类或子类的实例本身,不能新创建一个实例去调用。。。

 

今天在看ruby的介绍时才发现:

Protected methods can be called both in the same instance and by other instances of the same class and its subclasses.

这里有个重要的差别:other instances…

举个例子:

public class ClassC
    {              
        protected void MethodTwo()
        {
        }
        public void MethodOne()
        {          
            ClassC temp = new ClassC();
            temp.MethodTwo();

        }
    }

main函数里调用ClassC的实例和MethodOne(),省略。

按第一种理解就不可以运行MethodOne方法。而实际上是可以的。无论是c++还是c#。

上述英文定义是从实例的角度出发,用类和scope的角度来说,就是在基类或者子类的scope里都可以调用protected方法,无论调用的主体是基类或子类的实例,是本身的实例还是新构造的实例,这些都无所谓。

其实我觉得作者的定义不准确,instance都是class的应用,instance没有body,啥叫in the same instance? 定义都在class里嘛。

延伸一下,ruby有没有static的类成员我还没学到,但对于c++,protected的定义必须跳出instance的范畴。

因为,对于static的方法来说,根本没有instance的存在。比如:

C++代码:

 class ClassC
    { 
 
 protected  :
    static void MethodTwo()
        {
   printf(“hi”);
        }
        public  :
   static  void MethodOne()
        {          
   ClassC::MethodTwo();

        }
    };

int _tmain(int argc, _TCHAR* argv[])
{
 ClassC::MethodOne(); 
 return 0;
}

所以用class scope的方法来说明protected的用法是最好的。其实想想自己对这种基本概念仍然有不清楚的地方,直接导致了实际应用中基本不用protected方法。真正了解一个东西,才能更好的使用它啊。

不知道我的下一份工作,能否更多地走回到技术的道路上来。