抽象类方法特点

本文介绍了抽象类的概念及其在C#中的应用,通过具体的代码示例解释了如何定义抽象类、抽象方法,并展示了如何通过继承实现多态行为。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.抽象类的标记是abstract,并且不能实现,为了可以被继承,只能使用private修饰符。

2.抽象成员必须存在于抽象类中。

3.抽象类不能实例化。

4.子类继承抽象类需要实现所有抽象类方法。

5.在抽象类中可以包含实例成员,实例成员可以不被子类实现。包括字段属性和构造函数等。

6.抽象类是有构造函数的。虽然不能被实例化。

7.如果父类的抽象方法中有参数,那么。继承这个抽象父类的子类在重写父类的方法的时候必须传入对应的参数。




如果父类中的方法有默认的实现,并且父类需要被实例化,这时可以考虑将父类定义成一个普通类,用虚方法来实现多态。

如果父类中的方法没有默认实现,父类也不需要被实例化,则可以将该类定义为抽象类。


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


namespace 抽象类
{
    class Program
    {
        static void Main(string[] args)
        {
            MobileDisk md = new MobileDisk();
            MP3 mp3 = new MP3();
            UDisk udisk = new UDisk();
            Computer cpu = new Computer();
            cpu.MS = mp3;
            cpu.CpuRead();


            mp3.PlayMusic();






            Console.ReadKey();
        }
    }
    abstract class MobileStorage
    {
        public abstract void Read();
        public abstract void Write();
    }
    class MobileDisk : MobileStorage
    {
        public override void Read()
        {
            Console.WriteLine("移动硬盘read");   
        }
        public override void Write()
        {
            Console.WriteLine("移动硬盘write");
        }
    }
    class UDisk : MobileStorage
    {
        public override void Read()
        {
            Console.WriteLine("U盘read");
        }
        public override void Write()
        {
            Console.WriteLine("U盘write");
        }
    }
    class MP3 : MobileStorage
    {
        public override void Read()
        {
            Console.WriteLine("MP3read");
        }
        public override void Write()
        {
            Console.WriteLine("MP3write");
        }
        public void  PlayMusic()
        {
            Console.WriteLine("MP3Play");
        }
    }
    class Computer
    {
        public MobileStorage MS { get; set; }
        
        public void CpuRead( )
        {
            this.MS.Read();
        }
        public void CpuWrite()
        {
            this.MS.Write();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值