A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

比如abstract,override,sealed,virtual,等等,简单说一下是什么意思?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

6 个回复

倒序浏览
public 表示不限制对该类的访问
protected 表示只能从所在类和所在类派生的子类进行访问
private 只有其所在类才能访问
internal 只有对用一个包中的应用程序或库才能访问
abstract 抽象类不允许建立类的实例
sealed 密封类不允许被继承

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
new
     new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本。也就说在使用派生类的方法是调用的方法是New关键字新定义出来的方法,而不是基类的方法。
     在不使用 new 修饰符的情况下隐藏成员是允许的,但会生成警告。使用 new 显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。

Virtual
     Virtual 关键字允许在派生类中重写这些对象,默认情况下,方法是非虚拟的,不可以重写非虚方法,virtual关键字不可以与static、abstract、private、override一起使用。
     Virtual关键字又是和override紧密不可分的,如果要实现Virtual方法就必须要使用override或new关键字(new和override产生的机理不同)。

abstract
      在类声明中使用abstract修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。抽象类不能实例化。
       抽象方法声明不提供实际的实现,所以没有方法体;方法声明只是以一个分号结束,并且在签名后没有大括号 ({ })。

sealed
       密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。密封类不能被继承。
       当应用于方法或属性时,sealed修饰符必须始终与override一起使用。

Override
      Override关键字主要是提供派生类对基类方法的新实现,重写的基类方法必须和Override的方法具有相同的签名

希望对你有所帮助

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
王伟(wangwei) 发表于 2012-9-20 14:34
new
     new 关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成员的派生版本将替换基类版本 ...

谢谢,很好!很详细!
回复 使用道具 举报
本帖最后由 xwh 于 2012-9-21 19:48 编辑

    
public:  访问不受限制, 任何地方都可以访问。
protected:访问仅限于类或派生类。
private:  访问仅限于类
internal:访问仅限于当前程序集。
protected internal:  访问仅限于当前程序集或派生类。
-----------------------------------------------------------
  一个成员或类型只能有一个访问修饰符
命名空间上不允许使用访问修饰符。命名空间没有访问限制。
不嵌套在其他类型中的顶级类型的可访问性只能是 internal 或 public。这些类型的默认可访问性是 internal。
类中成员的默认可访问性是private
命名空间中的类型可访问性只能是 internal 或 public。这些类型的默认可访问性是 internal。

------------------------------------------------------------
abstract:
   抽象类
   不能被实例化
   可包含抽象方法和抽象属性
   派生类必须实现抽象基类的所有抽象成员,通过重写抽象成员实现。



------------------------------------------------------------
Sealed
   密封类         
   不能被继承 , 可防止意外的继承
   abstract 修饰符与密封类一起使用是错误的。
   结构是隐式密封的,因此它们不能被继承。

-------------------------------------------------------------
static
     静态类:
仅包含静态成员。
不能被实例化。不能使用 new 关键字创建静态类的实例
是密封的。
不能包含实例构造函数, 可包含静态构造函数






评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
1.abstract——修饰符可以和类、方法、属性、索引器及事件一起使用,在类声明中使用abstract修饰符,以指示该类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。
2.override——修饰符来修改方法、属性、索引器或事件。主要是提供派生类对基类方法的新实现。覆盖上面abstract、virtual两种关键字修饰的成员。
3. sealed——密封类不能被继承。密封方法可以重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed修饰符必须始终与override一起使用。
4.virtual——关键字用于修改方法或属性的声明,在这种情况下,方法或属性被称做虚成员。虚成员的实现可由派生类中的重写成员更改。
调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。
4.new——关键字用于显式隐藏从基类继承的成员。也就是在使用派生类时调用的方式方法是new关键字新定义出来的方法,而不是基类的方法,在不使用new修饰符的情况下隐藏成员是允许的,但会生成警告。使用new显式隐藏成员会取消此警告,并使用派生类新定义的方法。

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
一,非访问修饰符。

1.抽象类:凡是用abstract修饰符修饰的类被称为抽象类。抽象类就是没有具体对象的概念类。

2.最终类:如果一个类被final修饰符所修饰和限定,说明这个类不可能有子类。
3.用static修饰符修饰的域是仅属于类的静态域。
4.静态初始化器是由关键字static引导的一对大括号括起的语句组。
5.用final修饰的域,实际上就是Java中的常量。

volatile用来修饰接受外部输入的域。

用native修饰符声明其他语言书写方法体并具体实现方法功能的特殊的方法。

synchronized修饰的方法是一个类的方法(即static的方法),那么在被调用执行前,将把系统类Class中对应当前类的对象加锁。如果 synchronized修饰的是一个对象的方法(未用static修饰的方法),则这个方法在被调用执行前,将把当前对象加锁。 Synchronized修饰符主要用于多线程共存的程序中的协调和同步。



二,访问控制符。

访问控制符是一组限定类、域或方法是否可以被程序里的其他部分访问和调用的修饰符。类的访问控制符只有一个public,域和方法的访问控制符有四个,分别 是public、private、protected、private protected,另外还有一种没有定义专门的访问控制符的缺省情况。

1,public:公有访问控制符,处于同一个包中的类可以不需要任何说明而方便的互相访问和引用,而对于不同包中的类,则不行。但当一 个类被声明为public时,他就具有了被其他包中的类访问的可能性,只要这些其他包中的类在程序中使用import语句引入public类,就可以访问 和引用这个类。
2.default:缺省访问控制符:该类只能被同一个包中的类访问和引用,而不可以被其他包中的类使用,这种访问特性又称为包访问性。



3,private:私有访问控制符,用private修饰得域或方法只能被该类自身所访问和修改,而且不能被任何其他类(包括该类的子类)来获取和引用。private修饰符用来声明那些类的私有成员,它提供了最高的保护级别。

4,protected:保护访问控制符,用protected修饰的成员变量可以被三种类所引用:该类自身、与它在同一个包中的其它类、在其他包中的该类的子类。使用protected修饰符的主要作用是允许其他包中该类的子类来访问父类的特定属性。

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马