c#类和继承(学习笔记)

类继承

通过类继承我们可以定义一个新的类,新类纳入一个已经声明的类进行扩展。

已经存在的类称为基类,新类被称为派生类。

格式:class 派生类:基类

访问继承的成员

继承的成员可以被访问,无论他们是在基类中声明还是子派生类中声明。

class SomeClass
{
    public string f1="base class";
    public void Method1(string s)
   {
    Console.WriteLine("base-:{0}",s);
   }
}
class OtherClass:SomeClass
{
    public string f2="derived class";
    public void Method2(string s)
   {
    Console.WriteLine("derived-{0}",s);
   }
}
class Program
{
    static void Main()
    {
     OtherClass a=new OtherClass();
     a.Method1(a.f1);
     a.Method2(a.f2);
     a.Method1(a.f1);
     a.Method2(a.f2);
     }
}

以上输出结果:base-base class

                     base-derived class

                     derived-base class

                    derived-derived class

所有类都派生自object类

1.类object是唯一的非派生类,没有基类规格说明的类隐式地直接派生自类object.

2.类只能直接继承一个类,但继承的层次没有限制。

屏蔽基类的成员

1.要屏蔽一个继承的数据成员,需要声明一个新的相同类型的成员。

2.通过在派生类中声明新的带有相同签名的函数成员。

格式:使用new 关键字

class MyClass
{
  public string f1;
  ...
}
class MyOther:MyClass
{
  new public string f1;
  ...
}

基类访问

派生类想要访问被隐藏的继承成员,使用base关键字。

base.f1;

使用基类的引用

如果有一个派生类的引用,就可以获取该对象基类部分的引用(使用类型转换运算符把该引用转换为基类类型)。

class A
{
 ...
}
class B:A
{
 ...
}
class Program
{
   static void Main()
   {
    B b=new B();
    A a=(A)b;//转换成基类
    ...
    }
}
  

虚方法和覆写方法:

1.基类中用virtual,派生类中用override。

2.派生类中用new。

(之前有一篇写过了)

构造函数的执行

1.构造函数初始化语句

public MyClass(int x,string s):base(x,s)
{
}
public MyClass(int x):this(x,"yyy")
 {
  ...
 }
一个类有好几个构造函数,并且他们都需要在对象构造过程开始时,执行一些公共的代码。对于这种情况,可以把公共代码提出来作为一个构造函数,被其他所有的构造函数作为构造函数初始化语句使用,从而减少了代码的重复。



猜你喜欢

转载自blog.csdn.net/qq_41679818/article/details/80755649