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

---------------------- 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>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值