首页 > 代码库 > 抽象类,抽象方法

抽象类,抽象方法

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

namespace Test
{
    //抽象类不能是密封的或静态的

    //不能初始化的类被叫做抽象类。抽象类只能被继承。不能被实例化。抽象类中可以包含非抽象方法。这个方法可以由该抽象类的子类对象来调用。
    abstract class A //A是一个抽象类
    {
        public abstract void Method(); //抽象类可以包含抽象方法。
            

        public void Sum(int a, int b) //抽象类可以包含非抽象的方法。
        {
            Console.WriteLine(a + b);

            Console.WriteLine("我的名字叫{0},今年{1}岁",Name,Age);
        }


        public abstract string Name { get; set; } //抽象类可以包含抽象属性

        public int Age { get; set; } //抽象类可以包含非抽象的属性
    }
    class B :A
    {
        public override void Method()  //实现“抽象父类”的抽象方法。注意:实现的时候需要加override关键字
        {
            Console.WriteLine("实现父类的抽象方法");
        }

        public override string Name //实现“抽象父类”的抽象属性
        {
            get;
            set;
        }
    }
    /*
    class C
    {
        //含有抽象方法的类一定是抽象类,也一定要加abstract类修饰符,而这里的C类并不是抽象类。所以下面定义的抽象方法报错

        public abstract string Myabstarct(); //错误	1	“Test.C.Myabstarct()”是抽象的,但它包含在非抽象类“Test.C”中	
        
    }
     
     */
    class InheritanceTest1
    {
        static void Main(string[] args)
        {
           // A a = new A(); //错误 ,抽象类不能被实例化

            B b = new B();

            b.Name = "燕子李三";
            b.Age = 25;

            b.Sum(5, 6); //抽象类的非抽象方法只能被子类的对象来调用。


          

            Console.ReadKey();
        }
    }
}

抽象类,抽象方法