抽象类和抽象方法

抽象类不能是密封的或静态的。抽象类的成员只能被子类的对象来调用。注:抽象成员需要子类override重写后使用。非抽象成员由子类直接调用  

不能初始化的类被叫做抽象类。抽象类只能被继承。不能被实例化。抽象类中可以包含非抽象方法,属性,字段等成员。 

例如:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication34
{
   
        
    
    abstract class People
    {
        public abstract string Name { get; set; }//抽象类可以包含抽象属性
        public int Age { get; set; }//抽象类可以包含非抽象的属性

        public abstract void Method();//抽象类可以包含抽象方法
        public void Sum(int a, int b)//抽象类可以包含非抽象方法
          {
               Console.WriteLine ("我的学号是:{0}",a+b );
               Console.WriteLine("我的名字叫{0},今年{1}岁了", Name, Age);
           }
        public People()//抽象类还可以有构造函数。因为抽象类不能实例化,所以它就无法调用这个构造函数。这个构造函数只有在它所在的类的“派生类初始化”的时候才能够被执行到。  
        {
            this.Age =5;
            this.Name ="武大郎" ;     
        }
    }


        class B:People 
        {
            public override void Method()//重写“抽象父类”的抽象方法,需要加上override关键字
            {
                Console.WriteLine("实现父类的抽象方法");
            }
            public override string Name
            {
                get;
                set;             
            }
            public B 
            {

            }
        }
       
    
     class C:B
      {
     
      }
     
    //class C              //含有抽象方法的类一定是抽象类,这里的c 类不是抽象类。所以定义抽象方法会报错。
    //{
    //   public abstract void mmabstract();
    //}
 class Program
      {
               static void Main(string[] args)
        {
            //People a=new A();//错误,抽象类不能实力化。


            People  a=new B();//正确,实例化一个B类型的对象赋值给父类A的一个变量。
            a.Method();//输出实现父类的抽象方法,即:这里调用是子类的Method方法。


            B b=new B ();
            b.name="西门庆";
            b.sum(8,9);//抽象类的非抽象方法只能被子类的对象来调用。因为B类重写了A类的抽象Name属性,这里输出“我的学号是17,我的名字叫西门庆,今年5岁”


             C c=new C ();//因为c类继承B类,B类又继承A类,所以c类对象可调用A类公有成员
            c .sum(10,6);//调用父类的父类的Sum方法,这里输出“我的学号是16,我的名字叫武大郎,今年5岁”





            Console .ReadKey ();
        }
     }
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值