public , private ,static ,dim 四个的详细区别。求详解。。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了public , private ,static ,dim 四个的详细区别。求详解。。相关的知识,希望对你有一定的参考价值。

1、Public和Private一般用于定义全局变量,也可以在类中使用。

1-1、区别在于:
[Public]前者定义的是公共变量,如果在一个模块当中使用,那么整个应用程序都能使用它所定义的变量,如果在类中使用,那么它就是一个共有属性。

[Private]而后者定义的是私有变量,如果在一个模块中使用,那么只有这个模块才能访问到它所定义的变量,如果在类中使用,那么它就是一个私有属性。

2、Dim和Static一般在过程(Sub或者Function)内部使用,它们所定义的变量都只能在过程内部被访问。

2-1、区别在于:
[Dim]前者定义的是动态变量,过程一旦结束,该变量所占有的内存就会被系统回收,而变量所储存的数据就会被破坏。

[Static]后者定义的是静态变量,这意味着在过程结束后这个变量所占有的内存不会被回收,数据当然也不会被破坏了,这样当你下次再调用该过程的时候,数据就依然存在。

相比之下,Public和Static都有保留数据不被破坏的作用,但是,前者适合于那些所有过程都可能访问到的变量,而后者则把变量的作用范围缩在最小(只在该过程内能被访问)。
参考技术A public:整个项目都可以访问。private:只有本类可以使用。static:还是要根据前面的来定义访问修饰,static是静态的,可以不创建对象直接点出来。dim:这个好像是VB里面定义变量的东西。VB是弱类型的语言。 参考技术B Private
这个变量/函数只能在所定义的代码文件内使用。
Public
这个变量/函数能在这个工程内所有的代码文件内使用。要注意的是,如果你把它定义在了一个控件或者类里边,比如Form1,那在使用时它前面要加上控件名和类名,比如Form1.变量名。
Dim
同Private
Const (可以定义为 "Private Const" or "Public Const")
这个变量是只读,默认是 Private Const。
Global
同Public。Static
每次保存着上次修改过的值。
参考技术C public :公有,应用于类中,外部用户可以访问该类产生的对象的公有方法或者数据private :私有,应用于类中,外部用户不能访问该类产生的对象的私有方法或者得数据
-----------------------------
以上两者在继承方面也有许多不同点,详情看下书,不然也打不下那么多.

static:静态 ,有静态变量,静态函数啥的,在反汇编里我们会发现,他总是存在于全局数据区dim:是vb的吗?就是指声明吧,象php中的var,抱歉,五六年前用的vb,应该就是这样的意思了.

[转] Java中public,private,final,static等概念的解读

作为刚入门Java的小白,对于public,private,final,static等概念总是搞不清楚,到底都代表着什么,这里做一个简单的梳理,和大家分享,若有错误请指正,谢谢~

访问权限修饰符

public和private是访问权限修饰符,用于控制外界对类内部成员的访问。
public:表明对象成员是完全共有的,外界可以随意访问。
private:表明对象成员是完全私有的,不容许外界的任何访问。

具体关于public,private的内容请移步:Java对象成员的封装,  进一步有关protected的内容请移步:Java继承

 

类成员变化修饰符

static和final是控制类成员变化的修饰符。

static:静态成员修饰符,其修饰的静态变量脱离具体对象独立存在,在内存中之后一份拷贝,所有的对象都公用这一个存储空间,所以对static修饰的静态变量进行的修改对该类的所有对象都起作用。static修饰的静态函数代表所有对象的统一操作,只能调用静态变量。static是针对面向对象中的“多态”而提出来的,static修饰的静态成员不存在多态性。

final:final用来修饰方法和属性表示特殊的意义。修饰方法时表示方法不能被重写;修饰属性时表示属性不能被改变,这里属性又分为对象和基本类型,修饰基本类型表示基本类型赋值以后不能再被赋值,修饰对象表示这个属性不能再指向其他对象(引用不变),但是他指向的这个对象本身还是可以被改变的。

既然final方法不可重写,那下面这段程序是否有错呢?

 

1
2
3
4
5
6
7
8
9
10
class Base {
    private final void method() {
        System.out.println("In Base...");
    }
}
class Sub extends Base {
    public void method() {
        System.out.println("In Sub...");
    }
}

答案: 正确的

使用final关键字可以声明类、成员变量和成员方法,一经声明,便不可继承、不可修改和不能覆盖。

本例中,基类方法 是private ,他在子类中是不可见的,故子类中的 同名方法 不再是覆盖,相当于一个新的方法名。

这种情况比较特殊,书上说 如果子类中的一个方法与它超类中的方法有相同的方法名和参数签名,称子类中的方法覆盖(override)超类中的方法。 这种说法是不严密的。

额外小知识:

final方法不能被子类覆盖。编译器在调用final方法时会转入内嵌机制(直接将方法主体插入到调用处),大大提高执行效率(50%左右)。API类中的许多方法,如Object类中的getClass方法为final方法。
说明:final不能用于修饰构造方法。

以上是关于public , private ,static ,dim 四个的详细区别。求详解。。的主要内容,如果未能解决你的问题,请参考以下文章

[转] Java中public,private,final,static等概念的解读

ty修饰符 public private static

public class DistanceUtil private static final double EARTH_RADIUS = 6378137; private static doub

public , private ,static ,dim 四个的详细区别。求详解。。

PHP中const,static,public,private,protected的区别

java--public_private_void_static功能作用