修饰符
C#:
类修饰符:public、internal、 partial、abstract、sealed、static
成员修饰符:public、protected、private、internal、sealed、abstract、virtual、override、readonly、const
Public:最开放,所有的本程序集以及其他的程序集里面的对象都能够访问
Protected:比较开放,自身成员以及子类成员可访问
Private:只有自身成员才能够访问
Internal:本程序集内的成员可以访问
Partial:部分类,可以将一个类分成几部分写在不同文件中,最终编译时将合并成一个文件,且各个部分不能分散在不同程序集中
Abstract:修饰类的时候表示该类为抽象类,不能够创建该类的实例。修饰方法的时候表示该方法需要由子类来实现,如果子类没有实现该方法那么子类同样是抽象类;且含有抽象方法的类一定是抽象类
Sealed:修饰类时表示该类不能够被继承,修饰方法时表示该方法不能被覆写。
Static:修饰类时表示该类时静态类,不能够实例化该类的对象,既然不能实例化该类,那么这个类也就不能够含有对象成员,即该类所有成员为静态;修饰类成员时,该成员为类成员,只能通过【类.成员名】的方式访问
当static修饰构造函数时,构造函数不能含有任何参数,不能含有修饰符,构造函数不能对对象成员进行初始化操作。但是能够对静态成员进行初始化或者调用。不能保证他在什么时候执行,却能保证在第一次使用类型前执行。在静态构造函数中初始化的静态成员为最终初始化结果。例如:
public static int test = 0;
static Person()
{
test = 3;
}
static void
{
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]、sbstract、final
成员修饰符:public、protected、private、[default]、abstract、final、static
Public、protected、private,abstract与C#含义相同,没有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,不添加任何修饰符
成员修饰符:public、protected、private、volatile、const、mutable、inline、virtual,static
Public、protected、private与C#和java基本相同,区别在于:
1.C++中这三个操作符可用于控制继承,public继承与C#和java同;protected继承则父类的所有public和protected成员访问级别为private,private成员为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
本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名孙镜涛(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言。