c#基础:类与接口的学习

原创 2007年09月14日 11:50:00

1、抽象(abstract) 和密封(sealed) 类
       可继承,不可实例化的类:

       public abstract  class MyClass
       
{

       }

    
      可实例化,但不可继承:

public sealed class MyClass
{

}


     注意:编译器不允许派生类的可访问性比基类更高。

2、继承接口
      除了以指定的方式继承类外,还可以继承接口(同样在冒号后面),例如,给MyClass类添加一个接口:

public  class MyClass :  IMyInterface
[
   
//class members .
}

     同时,接口 IMyInterface 的成员必须在支持类 MyClass 中得到实现,但如果不想使用 IMyInterafce 中的成员,
可提供一个“空”的执行方法(没有函数代码),还可以把 IMyInterface 成员实现为抽象类中的抽象成员 。
      另外,同时指定基类和接口的方法应该是

public  class MyClass :  MyBase , IMyInterface1,IMyInterface2
[
   
//class members .
}
     
3、申明接口和类是相似的,要注意的,是关键字 abstract  /  sealed 是不能在接口中使用的 ,无意义 。

一、抽象类与接口
        1、类似处:他们都包含可以由派生类继承的成员。都不能实例化,但可以声明他们的变量。如果这样做,
就可以使用多态性把继承这两中类型的对象指定给他们的变量。接着通过这些变量来使用这些类型的成员,但
不能直接访问派生对象的其它成员。 

         2、区别:派生类只能继承一个基类,即只能直接继承一个抽象类,但可以通过一个继承链来包含多个抽
象类。相反,类可以使用任意多个接口。
               按照定义,接口成员是公共的(因为它们倾向于外部使用),但抽象类的成员可以是私有的、受保护
的、内部的或受保护的内部成员。
               此外,接口不能包含字段、构造函数、静态成员或常量 。

          3、这说明这两种类型用于完全不同的目的。抽象类主要用作对象系列的基类,共享某些主要的特性,例
如共同的目的和结构。接口则主要用于类,这些类在基础水平上有所不同,但仍可以完成某些相同的任务。

          举例说明:假如有一个对象系列表现火车,基类Train包含火车的核心定义,比如轮胎和引擎规格。但这
个类是抽象的,我们不能开着这样的火车 。所以,我们给它添加一些特性(真实的发动机、好的轮胎),得到了“蒸汽”和“汽油”火车两个派生类 Train_A 和 Train_B 。

           接着,我们来考虑,汽车做好了,我们可以用来做什么?对,搭乘客,装货物,而这两种方法我们可以
放在接口 Interface 中,这样他们就有了共同的任务。

二、结构类型
            1、结构和类非常相似,但结构是值类型的,类是引用类型的,这意味着什么?举例说明:

namespace exmaple_1
{
     
class Myclass
    
{
         publlic  
int  val ;
     }


    
struct   myStruct
    
{
          
public   int   val;
    }


    
class program
   
{
      
static void Main(String[]  args)
       
{
             Myclass   A  
=   new  Myclass() ;
             Myclass   B  
=    A;
            A.val
=10;
            B.val
=20;
            myStruct  C 
=  new   myStruct() ;
            myStruct  D 
= C ;
            C.val
=30;
            D.val
=40;
           Console.WriteLine(
"A.val={0}", A.val) ;
           Console.WriteLine(
"B.val={0}", B.val) ;
           Console.WriteLine(
"C.val={0}", C.val) ;
           Console.WriteLine(
"D.val={0}", D.val) ;
           Console.ReadKey() ;
        }

  }

        运行后,得到的结果是 :
        A.val =20,  B.val=20 ,  C.val=30,  D.val=40 。



 
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

C#(面向对象基础-抽象类与接口)下-1

一、抽象类与接口 抽象类:抽象类其实很好理解,抽象类就是将多个类再进行抽象的结果。前面提到的Animal类就是抽象类,它是将猫类狗类再进行抽象的结果。而且它完全符合抽象类要注意的几点 第一:抽象类不能...

C#接口基础 - 示例

  • 2009-07-30 21:02
  • 51KB
  • 下载

《C#入门经典》第六版 学习笔记之第十章 定义类成员(1) 10.3 接口的实现~10.5 部分类方法定义

10.3 接口的实现 1、如何定义和实现接口? interface I {     //interface members. } 2、接口成员的定义与类成员的定义相似,但有个重要区别: ...

基于C#的接口基础教程

  • 2007-11-10 15:57
  • 19KB
  • 下载

基于C#的接口基础教程

  • 2008-10-15 21:22
  • 56KB
  • 下载

C#学习之接口和抽象类

坚持 成长 每日一篇前言一,接口和抽象类的相同点 1.抽象类和接口都包含可以由派生类继承的成员。 2.接口和抽象类都不 能直接实例化,但可以声明这些类型的变量。 3.可以声明接口和抽象类型的变量...

C# 基础 接口的使用实例

  • 2011-12-22 17:13
  • 20KB
  • 下载

C#控制台基础 接口的函数成员重名,如何解决

镇场诗:慈心积善融学习,技术誓为大家学。善心速造多好事,前人栽树后乘凉。我今于此写经验,愿见文者得启发。 ——————————————————————————————————————————————...

面试被虐系列_基础数据结构篇_C#集合接口_1

在任何一门号称为高级编程语言的语言当中,各种基础集合类是必不可少的一部分。在实际的编程当中,开发人员肯定会遇到各种需要操作大量数据,或者大量对象的情况。在面对不同的应用场景下,各种不同的集合类便在这里...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)