黑马程序员---面向对象之"抽象类"

来源:互联网 发布:notepad mac 破解版 编辑:程序博客网 时间:2024/05/21 14:57

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ----------------------

抽象类使用abstract修饰符,用于表示类中成员不一定全部实现。即可以只有声明部分而没有实现部分。抽象类只能做基类。

抽象类与非抽象类的区别:

             第一:抽象类不能直接被实例化,只能在扩充类中通过继承使用。对抽象类使用new关键字会产生编译错误。

             第二:抽象类可以包含抽象成员,而非抽象类不能包含抽象成员,当从抽象类中派生非抽象类时,非抽象类必须实现抽象类中所有的抽象成员。

            例如:

 //抽象类A    abstract class A    {        public abstract void A();//抽象成员,没有实现部分    }    //类B 继承自A 由于没有实现类A的抽象方法,所以也必须声明为抽象类    abstract class B : A    {        public void B()        {        }    }    //类C 继承自抽象类B     public class C : B    {        //实现抽象类A 中的抽象方法        public override void A()        {            Console.WriteLine("你好");        }    }


在非抽象类中实现抽象类时,必须实现抽象类中的每一个抽象方法,而且每个实现的方法必须和抽象类中指定的方法一样,即接受相同个数,相同类型的参数,具有同样的返回值在非抽象类中实现抽象类时,必须实现抽象类中的每一个抽象方法,而且每个实现的方法必须和抽象类中指定的方法一样,即接受相同个数,相同类型的参数,具有同样的返回值

//定义一个抽象类    public abstract class A    {        //可以被重写的方法,有实现部分        public virtual void a()        {            Console.WriteLine("人类");        }        //抽象方法,没实现部分        public abstract void Aa();    }    //定义一个类,继承自抽象类    public class B : A    {        //重写基类的虚拟方法        public override void a()        {            Console.WriteLine("中国人");        }        //实现抽象类的抽象成员        public override void Aa()        {            Console.WriteLine("河南人");        }    }    class Program    {         static void Main(string[] args)        {            B b = new B();            b.a();            b.Aa();            Console.ReadKey();        }    }


 

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 
详细请查看:<ahref="http://edu.csdn.net" target="blank">http://edu.csdn.net </a>