首页 > 其他 > 详细

C# 继承

时间:2014-03-21 08:31:46      阅读:421      评论:0      收藏:0      [点我收藏+]

C# 类的继承
(1)结构体不能被继承
(2)基类的所有成员都会被派生类继承,但是private继承后不能被访问,其余类型都可以被访问。
(3)类继承时的基类只能有1个,并且必须放在“:”的后面(紧挨着),后面可以跟多个接口
(4)基类方法声明为virtual时,派生类可以利用override重写此方法
public class Xt
{
	int xx;
	public override string ToString()
	{
		return "what a fine day it is";
	}
}


(5)基类的方法是abstract时候,派生类若不再是abstract class,则必须实现此方法。
(6)通过sealed 来修饰类或者类成员
当sealed 修饰类时候,此类被密封,从而不能做位其他类的基类
public sealed Tc
{
	//...
}


当sealed用来修饰属性或者方法的时候,必须与override一起使用,表示是对方法的重写之后再也不能更改


重写的方法必须是基于 virtual、abstract 或 override的。
override 之后,表示派生类调用该同名方法时候不会调用基类中的,而是被重写的。
  public sealed override string ToString()
        {
            //return base.ToString();
            return "what a fine day iterator is";
        }


(7)用new来隐藏基类中的字段,属性,方法
此时表示会把基类中具有相同签名的方法,同名的字段,属性给隐藏而不是重写,不一定要加new,但是不加new会出现报警。


(8) new 和override的区别
new 类似C++派生类中的重定义,override类似C++中类中的虚函数,通过基类的指针或者引用来调用,最后通过运行时确定调用具体哪个函数。


示例:
namespace ConsoleApplication5
{
    class Program1
    {
        public sealed override string ToString()
        {
            //return base.ToString();
            return "what a fine day iterator is";
        }


        public void print(int x)
        {
            Console.WriteLine("this is int in Program1:{0}",x);
        }
        public virtual void print(string str)
        {
            Console.WriteLine("this is string in Program1:{0}",str);
        }
    
    }


    class Program2 : Program1
    {
        //public override string ToString() //error
        //{
        //    return "funck";
        //}
        public void print(int x)
        {
            Console.WriteLine("this is int in Program2:{0}",x);
        }
        public override void print(string str)
        {
            Console.WriteLine("this is string in Program2:{0}",str);
        }
    }


    class Program
    {
        static void Main(string[] args)
        {
            Program1 A1 = new Program1();
            Program1 A2 = new Program2();
            A1.print(1);
            A1.print("A");


            A2.print(1);
            A2.print("A");


            Program2 B = new Program2();
            B.print(1);
            B.print("A");
            
            
        }
    }
}


C# 继承,布布扣,bubuko.com

C# 继承

原文:http://blog.csdn.net/ddupd/article/details/21659601

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!