修饰符

C#

         类修饰符publicinternal partialabstractsealedstatic

成员修饰符publicprotectedprivateinternalsealedabstractvirtualoverridereadonlyconst

 

         Public:最开放,所有的本程序集以及其他的程序集里面的对象都能够访问

 

         Protected:比较开放,自身成员以及子类成员可访问

 

         Private:只有自身成员才能够访问

 

         Internal:本程序集内的成员可以访问

 

         Partial:部分类,可以将一个类分成几部分写在不同文件中,最终编译时将合并成一个文件,且各个部分不能分散在不同程序集中

 

         Abstract:修饰类的时候表示该类为抽象类,不能够创建该类的实例。修饰方法的时候表示该方法需要由子类来实现,如果子类没有实现该方法那么子类同样是抽象类;且含有抽象方法的类一定是抽象类

 

         Sealed:修饰类时表示该类不能够被继承,修饰方法时表示该方法不能被覆写。

 

         Static:修饰类时表示该类时静态类,不能够实例化该类的对象,既然不能实例化该类,那么这个类也就不能够含有对象成员,即该类所有成员为静态;修饰类成员时,该成员为类成员,只能通过【类.成员名】的方式访问

         static修饰构造函数时,构造函数不能含有任何参数,不能含有修饰符,构造函数不能对对象成员进行初始化操作。但是能够对静态成员进行初始化或者调用。不能保证他在什么时候执行,却能保证在第一次使用类型前执行。在静态构造函数中初始化的静态成员为最终初始化结果。例如:

                      public static int test = 0;

                    static Person()

                   {

                       test = 3;

           }

 

        static void Main(string[] args)

        {

            Console.WriteLine(Person.test);//运行结果为3

}

也就是说相当于:

public static int test;

static Person()

{

      test=3;

}

         Virtual:修饰方法成员,表示虚方法。父类可以含有该类的实现,子类可以覆写该函数。

 

         Override:表示该方法为覆写了父类的方法。

 

         Readonly:修饰字段,表示该字段为只读字段。

 

注意:readonly修饰引用类型时由于操作不当可能修改该只读对象状态。例如:

Readonly List<Person> persons=….;

我们可能在某些地方对persons 进行了修改:persons.add(new Person());

 

         Const:修饰字段,表示该字段为只读字段。并且在编译时必须能够明确知道该字段的值,其值是硬编码到程序中去的,修改了该类型成员后需要重新编译才能使修改生效。

         readonly是运行时只读,内容在运行时确定,所以修改了readonly类型成员后无需重新编译即可生效。

         Readonly不能修饰局部变量,const可以。

注意:当一个类或方法没有被任何修饰符修饰时,默认为internal

 

Java

         类修饰符public[default]sbstractfinal

         成员修饰符publicprotectedprivate[default]abstractfinalstatic

         PublicprotectedprivateabstractC#含义相同,没有partial修饰符

 

         [Defaul]t:没有给成员添加修饰符时默认包内可见

 

         Final:修饰类和方法时等同于c#sealed,修饰字段时等同于c#const

 

         Static:基本等同于C#

区别在于:

1.       修饰方法时,可以通过对象实例来调用。例如:

Class Person{

       Public static void show(){}

}

Person.show();

New Person().show();

2.       没有静态构造函数,不过有静态语句块,等同于静态构造函数。例如:

Public static int A=0;

Static{

       A=3;

}

结果与C#

C++

         类修饰符:所有的类默认为public,不添加任何修饰符

         成员修饰符publicprotectedprivatevolatileconstmutableinlinevirtual,static

 

         PublicprotectedprivateC#java基本相同,区别在于:

         1.C++中这三个操作符可用于控制继承,public继承与C#java同;protected继承则父类的所有publicprotected成员访问级别为privateprivate成员为private

Private继承则父类中所有成员访问级别为private

 

         Valotile:修饰方法,表示该方法调用后,对象内部的某些属性或对象状态会发生改变;实现以及定义时都需要指定volatile关键字

 

         Const:修饰方法,表示该方法不会改变对象内部状态,定义以及实现中都需要添加const关键字;修饰字段表示为只读常量字段,修饰方法参数表示该方法内不能修改该参数的值

 

         Mutable:修饰字段,被表示为mutable的字段其值可以在标示了const的方法内发生改变

 

         Inline:修饰方法,表示该方法在编译时内联。注意:在头文件中实现的方法默认为内联方法,如果头文件中没有实现,在实现文件中实现时可以加inline关键字指定内联。定义时可以指定inline关键字;最后是否内联取决于编译器

 

         Virtual:虚方法,子类可以覆写,关键字可带可不带

 

         Static:修饰字段表示为静态字段,且定义在.h文件中;初始化在.cxx文件中;

修饰方法为静态方法,类域以及该类的实例对象都可以访问

 

c++关键字的内容差不多如此,但是使用起来比较麻烦,后面会针对使用做补充,希望大家有什么意见和修正也提出来,在此表示感谢!)

 

原创文章,转载请注明出处!
All CopyRight Reserved !

 

主页:http://jingtao.cnblogs.com

QQ:307073463
Email:jingtaodeemail@qq.com
MSN:sunjingtao@live.com

原文地址:https://www.cnblogs.com/jingtao/p/1421802.html