c#中的类

c#中的类分为普通类(实例类),静态类,抽象类,密封类

抽象类:高度概括,优先规划,抽离共性.并不是为了实例化个体.主要是用来等着其他类来继承.没有类来继承抽象类无意义.抽象类是不能实例化的.所以无法通过实例的方法来方法抽象类的方法与属性,也无法通过抽象类来访问抽象类中的属性与方法.所以建议不要再抽象类中定义实例成员,如果一个抽象类中有实例成员,我们称这个类没有完全抽象.如果一个类只有抽象成员我们称它为完全抽象.

抽象类的定义

public abstract class{

public abstract int num{get; set;}//抽象属性
public  abstract  void   numchange();//抽象方法


}

抽象方法的特征:1.定义时使用abstract关键字 2.不能实现,既没有方法体.3.抽象方法必须在抽象类中定义.

抽象类的具体应用:一个数据库中的表,一般都有增删查改操作,我们可以把这些操作封装到抽象类中.

密封类;

密封类定义使用sealed关键字.密封类的存在是为了让一个类无法继承,如果所有的类都能继承,很容易导致继承的滥用,进而使得类的层次结构变得十分复杂,这样使得开发人员的理解与使用变得十分困难,为了避免滥用继承,c#提出了密封类的概念.

密封类的特征:不能被继承,密封类不能当父类.2.密封类可以继承其他类(但静态类,密封类除外);3.在密封类中不能包含虚成员,因为虚成员只能在派生类中被重写.,密封方法在密封类中.密封方法不能在其他类中再次被重写.密封类没有子类不能被继承.

密封类中可以有受保护成员,不建议使用,受保护成员是可以在子类中使用的,而密封类中没有子类.

密封类定义密封方法有个前提:1.必须继承其他的类,且其他类必须有虚方法或抽象方法或已经重写过得方法 2.密封类中不能直接定义密封方法,而是把一个需要重写的方法定义成密封的.

普通类:

namespace ConsoleApp4
{
    /* 继承:
     * 静态类无法被继承
     * 抽象类可以被继承
     * 密封类无法被继承
     */
    //  public class Class1:Static1{ }
    // public class Class2:Abstract1{}

    //  public class Class3:Sealed1 { }
/*类中无法存在抽象成员与密封成员*/
    public class Class4
    {
        public int Comon { get; set; }
        public static string Stc { get; set; }
       // public abstract int art { get; set; };
      // public sealed int sld { get; set; }
    }

}

静态类:

namespace ConsoleApp4
{
    //静态类不能继承
    // public static class Static1 :Class4{}
    // public static class Static2:Static3{ }
    //public static class Static3:Abstract1 { }
    // public static class Static4:Sealed1 { }
    //静态类中只能存在静态成员
    public static class Static5
    {
      //  public int Cls { get; set; }
         public static int Stc { get; set; }
      //  public abstract int Art { get; set; }
     // public sealed int Sld { get; set; }
    }
}

抽象类:

namespace ConsoleApp4
{
    /*抽象类可以继承普通类与抽象类*/
    public abstract class Abstract1 : Class4 { }
    // public abstract class Abstract2:Static5{}
    public abstract class Abstract3 : Abstract4 { }
    public abstract class Abstract4 { }
    //public abstract class Abstract5 :Sealed1{ }

    //抽象类中不能定义密封成员
    public abstract class Abstract6
    {
        public int Cls { get; set; }
        public static int Stc { get; set; }
        public abstract int Art { get; set; }
       //  public sealed int Sld { get; set; }
    }
}

密封类:

namespace ConsoleApp4
{
    //密封类可以继承普通类与抽象类
    public sealed class Sealed1 : Class4 { }

    // public sealed class Sealed2:Static5{}
    public sealed class Sealed3 : Abstract4 { }
    //  public sealed class Sealed4 : Sealed5{ }

    //密封类中不能定义抽象成员与密封成员
    public sealed class Sealed5
    {
        public  int num;
        public int Cls { get; set; }
        public static int Stc { get; set; }
        //public abstract int Art { get;set; }
       // public sealed int Sld { get; set; }
    }
 
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉玊则不达

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值