学习C#之各种类

一、静态类:

  • 用来存放封装静态成员和常量成员

  • 通过static class 声明

  • 静态类不能声明引用变量,也不能创建对象

  • 静态类是一种特殊的密封类,不支持派生

  • 静态类只能派生自object对象类

  • 访问成员方式:类型名称.成员名称

static class Test:Object 
{
    public static void Func() { }
}

class Program
{
    static void Main(string[] args)
    {
          Test test = new Test() ;
    }
}

二、抽象类

  • 抽象类特点:如果一个类中包含抽象函数,那这个类必须是抽象类。但抽象类不一定要包含抽象函数。抽象类除了可以包含抽象函数之外,其他操作和普通类一致。

  • 使用抽象类的场景:抽象类不能创建对象,通常用于作为基类,可以声明引用变量,体现多态。

  • 抽象函数:通过abstract修饰的只有声明没有实现的非私有实例函数。

  • 使用抽象函数的场景:如果多个一级派生类(直接继承自抽象类的类)中的函数只有相同的声明,均有独立的实现,且不需要操作基类对象,调用基类中的函数,就可以将其声明为抽象函数

  • 抽象类通过abstract class 声明

class Test 
{
    virtual public void Func() 
    {
        Console.WriteLine("Test");
    }
}

//声明抽象类
abstract class TestClass:Test 
{
    //抽象函数
    public abstract void Test();

    public override void Func()
    {
        Console.WriteLine("TestClass");
    }

    public virtual void Function() { }
}

//当普通类或密封类直接继承自抽象类时,必须要实现全部的未实现的抽象函数。通过override重写
class TestOne : TestClass 
{
    public override void Test()
    {
        Console.WriteLine("实现抽象函数");
    }
}

class TestTwo : TestOne 
{
    //可以选择是否重写重写函数
    public override void Test()
    {
        base.Func();
    }
}

//抽象类继承自抽象类,可以选择是否实现基类中的抽象函数。若不实现,一直向下传递由第一级直接继承自该类的密封类或普通类中提供第一次重写实现。
abstract class TestClassTwo : TestClass 
{
    public override void Test()
    {
    }
}

class TestThree : TestClassTwo 
{
}

class Program
{       
    static void Main(string[] args)
    {
        TestClass test = new TestClass();
    }
}

三、密封类

  • 特点:不支持被继承的普通类,不能在密封类中声明虚函数,密封类可以继承自其它类。

  • 通过sealed class声明

  • 使用场景:当希望一个类不能被任何类继承时,就可以将其定义为密封类。

sealed class Test 
{
}

class Program
{
    static void Main(string[] args)
    {
    }
}

四、部分类

  • 使用partial关键字可以声明部分类, 部分类的作用是可以在多个文件中声明同一个类, 主要用于类比较大的时候进行拆分,或者xaml中使用也比较多。

  • 不要把部分类以为是定义了多个类,其实还是一个类,只是把这个类拆分了。 在程序运行的时候编译器会把这个类合并在一起的, 这样做的好处是,当你有一个类很大的时候你可以按实现功能拆分在不同的文件中,这样就方便阅读和修改了。

partial class MyClass
{
   public void ShowName()
   {
       Console.WriteLine("姓名: 骆驼祥子");
   }
}

partial class MyClass
{
    public void ShowAge()
    {
        Console.WriteLine("年龄: 26"); 
    }
}

partial class MyClass
{
   public void ShowSex()
   {
       Console.WriteLine("性别: 男");
   }
}

class Program
{
    static void Main(string[] args)
    {
        MyClass My = new MyClass();
        My.ShowName();
        My.ShowAge();
        My.ShowSex();
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值