public属性//1.我没找到这个属性;2.且看书本: "该属性决定类模块所定义的类能否被其他应用程序所共享使用" 另一种解释"若该属性值为true时,则表示可以在其他项目中引用;否则只能在本项目中使用"我不明白它说什么,只是在猜测.这些话语中"其他应用程序"和"其他项目"是指本工程的其他模块,如窗体模块和标准模块 还是指excel,c++等呢.如果我能在类的属性页里能看到并且设置它的值的话,我就会去用测试来验证我的猜测
但是我不能.instacing属性 能否让其他应用程序共享该类 ,在工程的类中找不到,在做dll的时候看到了
明白了public属性应该就会明白这个属性吧

解决方案 »

  1.   

    郁闷啊,我还以为只有我是初学的呢,原来还有比我菜的.
    public属性是用来定义类的属性的,形式如: public class........
    这样你的这个类就可以被其他工程使用了
      

  2.   

    属性范围只有两种Public和Friend,当然你要写成Private属性也可以,不过这么做没什么意义。Public属性表示对内对外全部可见,而Friend属性只能在工程内部访问。Instacing属性只在Active DLL或者Active EXE中的类模块中存在,因为这两种工程本身并不能单独运行,而是为其他程序提供服务,相当于一个类库。在标准EXE中类模块不存在与其他工程共享,所以这个属性被忽略掉了。
      

  3.   

    2 rypgood(失魂),你有点开心哦,呵呵,这样不是很好.
    "public class........
    这样你的这个类就可以被其他工程使用了"------不所云啊
    Public PopertyA as string 
    这样就定义了该类实例的属性,实例的PopertyA属性可读可写
    也可以用
    private strPopertyA as string 
    然后使用PopertyA Let,PopertyA Get 也可以收到同样的效果.
    (我觉得你们就是这种意思,还有书本上的话也是,让人费解!)2 province_(雍昊) "类的公共属性",public 关键字定义的属性就是叫做"类的公共属性"吗?
    那类不公共的属性是什么属性? 我觉得你之所以叫它为"公共属性"是因为平时使用的预定义的
    控件类,如:name 就是公共属性.但是Public name as string,这样的话你能够通过这个属性象text1.caption一样引用实例吗?所以我觉得无所谓"公共属性"与否(除非这个类又是父类的子类之一-----------只是突然猜到的).2 fj182(阿花) Friend 我不知道了,private我就知道,如果使用public来定义属性,创建对象实例后可直接读写该实例的该属性public为true"就可以被其他工程使用了"
    "Public属性表示对内对外全部可见"  
    "该属性决定类模块所定义的类能否被其他应用程序所共享使用" 
    "若该属性值为true时,则表示可以在其他项目中引用;否则只能在本项目中使用"现在想知道的只是这个:如上面四行文字了.
    我想这个你们所说的"其他工程"是不是对整个工程组下的所有工程(如工程1,工程2)意思呢?
    如:在工程1中定义class1:
    public A as string  
    private strB as string
    唉,我发现我表达自己也有点难了,我自己去测试一下
      

  4.   

    以下在类模块中
    方法1:
    Public A  as long方法2:
    private m_A as longpublic property get A as long
        A=m_A
    end propertypublic property let A(byval Value as long)
       
       if Value<0 then err.raise vbobjecterror,,"无效属性值"   m_A=Valueend property两种方法能够达到同样的效果,不过按照面向对象的观点方法1不可取,因为对变量A的访问无法控制,而在方法2中试图传入一个小于零的数来修改变量m_A将会引发一个错误。
      

  5.   

    fj182(阿花) ,这个我是知道的Public属性表示对内对外全部可见工程内我明白(任何过程和函数中能创建该类的对象实例),工程外就不明白了,工程外是什么啊.工程外 ---- 其他工程----其他项目-----其他程序   这些文字,是你们和书本教我的时候说的,我根本就不知道指什么.我对下面实践过了
    还有在工程组中有:工程1,工程2,工程3,三个工程
    工程1中定义了一个类class1
    而在工程2中是不可以创建class1实例的
    如果要在工程2中使用class1就得把class1添加到工程2中,或者是做成activexDLL了,类库了
      

  6.   

    顺便就问个共享属性的问题
    我想计算出某个类所创建的对象实例的数目看了看书本,觉得不对的
    标准模块中:
    Public nCount As Integer
    类模块中:
    Public Property Get Count() As Integer
           Count = nCount
    End PropertyPublic Property Let Count(ByVal NewValue As Integer)
           nCount = NewValue
    End Property1.count属性是不可写的
    2.count属性是动态变化
      

  7.   

    不公共的属性用PRIVATE来定义私有属性,“但是Public name as string,这样的话你能够通过这个属性象text1.caption一样引用实例吗?”
    CAP是TEXT对象的公共属性,你STRING对象事先没定义当然就不能这么用了。实际上我不是很明白你这句话的意义,如果你的类实例化了当然能用CLS。NAME这种形式来访问NAME。
      

  8.   

    OHH,MY GOD! 请你们认真读贴再来回帖吧又在说"公共属性"
    公共属性:由同一个类创建的多个对象实例都具有的属性   (这样理解对吗?)"caption 是TEXT对象的公共属性"----------- 哪个属性是某一个text对象所特有的?
    再如控件数组text1吧,其中有text1(0),text1(1),text1.(2),这3控件元素中,哪个属性是text1(0)有,而其他两个控件元素没有的?请列出来.但是text1.count属性就是他们三个元素所不具备的属性了,然而text1是比text1(0),text1(1),text1.(2)高一层的啊(父类吧,不会c++,不然也不会有那么多问题来问).
    再看我所问到的public属性,可能是用来责怪你们以上所回帖子的
    DAMN 类中代码
         Public Name As String 
         Private intAge As Integer 
         Private udtCoat As CoatType     Public Event Awake()      Public Property Get Age() As Integer
           Age = intAge
         End Property     Public Property Let Age(ByVal vNewValue As Integer)
             intAge = vNewValue
         End Property就看Age属性好了,上面Age属性的读写过程都使用了Public关键字,然后观察到的是,在窗体模块,标准模块的事件过程,通用过程,函数过程均可以
    dim a as new DAMN
    a.Age=11 '效果(当a右边的那个小点你敲下时,vb就自动列出了DAMN类的成员列表,其中就含有Age属性)
    当Age属性的读写过程用private来定义呢,在其他模块中就不可以有上面所说的效果了如果你们给我解释的public属性就是这个意思的话,那么
    "工程外 ","其他工程","其他项目","其他程序"这样的解释会让我非常的不理解,如果你说"当不是使用public关键字定义属性时,工程内的其他模块(如窗体模块,标准模块)就不可以引用其实例的属性".
    幸好你们不是老师,不过老师也....... 哈哈,有点郁闷了,不要见怪哈.
      

  9.   

    佩服你的理解能力。Active部件(DLL或者EXE)本身并不能单独运行,主要是以对象的形式为其他程序(标准EXE或者Active部件)提供可重用代码。我们所说的工程外就是指使用部件对象的客户端。举个例子说明。
    工程A是一个Active DLL工程,而工程B是标准的EXE,在工程A中有类模块DAMN。在 DAMN 中有:     Private intAge As Integer      Public Property Get Age() As Integer
           Age = intAge
         End Property     Public Property Let Age(ByVal vNewValue As Integer)
             intAge = vNewValue
         End Property如果在工程B中引用工程A,那么类模块DAMN中的属性对工程B可见,在工程A中也可见。如果把该过程声明为Friend,那么属性只在A中可见,B中不可见。强调一下,Private属性虽然没有语法错误,但是是没有意义的,因为A和B中都不见。