C#Lesson_10抽象类、静态类和单例

抽象类

抽象方法

//比如想要定义一个香烟类,可点烟有宇宙牌香烟 红旗渠牌香烟 中华牌香烟 改怎去定义呢?

// 抽象类修饰符 abstract 

//abstract 放在类的前面,称为抽象类
abstract class Smoke
    {
        //abstract表示抽象的方法,放在方法前面表示方法是抽象方法
        //抽象方法所在的类必须是抽象类
        public abstract void Smoke();

//抽象类独立于抽象方法,也就是说没有抽象方法,类也可以声明为抽象类,抽象类不能被直接实例化,其他跟普通类没有区别。

    }

抽象类说明

//抽象类中如果有抽象方法,那么被继承的具体类一定要实现抽象类中得所有抽象方法。

abstract class A	
{		
public abstract void AFunction ();
}	
abstract class B : A	
{
public abstract void BFunction ();
}
class C : B
{
public override void AFunction()
{
Console.WriteLine ("AFucntion.");
}
public override void BFunction()	
{
Console.WriteLine ("BFunction.");
}	
}

总结

1.抽象方法只作声明,而不包含实现,抽象方法旨在继承后实现,所以不能用private修饰。

2.抽象类不能被直接实例化

3. 抽象类可以没有抽象属性和抽象方法,但是一旦有了抽象方法,就一定要把这个类声明为抽象类

4.如果抽象类的派生类不是抽象类,那么必须重写抽象类的所有抽象方法。

扩充

 

1.抽象方法一定不能有实现,虚方法一定要有实现;

2.抽象方法被具体类继承后,一定要被重写,虚方法可以不重写。

3.抽象方法一种特殊的虚方法,一旦类中有抽象方法,

则类必须声明为抽象类,抽象类中可以有虚方法

静态成员和静态类

用static修饰的成员称为静态成员

class Beauty
    {
        //静态字段 
        public static string feature = "美女"; 
        //静态方法
        public static void SpendMoney()
        {
            Console.WriteLine("买:衣服、包包、化妆品、鞋子。。。。");

        }
    }

景来成员由类名来调用  类名点出来

public static void Main(string[] args)
{
    Beauty.SpendMoney();
    string name = Beauty.feature;
}

区分静态成员

//=================由类来调用===========================
//静态字段 
public static string feature = "美女"; 
//静态方法
public static void SpendMoney()
{
    Console.WriteLine("买:衣服、包包、化妆品、鞋子。。。。");
}

//==============由对象类调用=========================
//普通的方法和字段
public string name;
public void Job()
{
    Console.WriteLine("Unity主程");
}

静态类

//用static修饰的类称为静态类。
//静态类不能实例化,所以内部只允许有静态成员或const修饰的常量

static class MyMath
{
    //int length;  // 不能包含非静态成员
    static int length;
    const int id = 10;
    //void fun(){} // 不能包含非静态成员
   static int Abs()
   {
       return a > 0 ? a : -a;

   }
}

静态类特点

1.仅包含静态成员和const修饰的常量

2.不能被实例化。

3.是密封的, 不能作为父类

4.有静态构造方法(函数),但静态构造方法必须是无参数的

静态类用法

一些公用的变量或者方法可以放在静态类里面,以供其它类使用,例如一些排序算法等,可以把静态类看作一个工具类,任何地方只要需要都可以调用该类里面的成员,以提高开发效率。

单例设计模式

什么是单例设计模式

简单来说单例设计模式就是确保一个类只有一个实例

为什么要有单例模式

单例模式是资源管理的必备模式,保证一个类只有一个实例并且这个实例易于被访问

如何实现单例模式

 

1、构造方法设为private。

2、内建静态实例。

3、静态构造方法给实例做初始化。


    class Person
    {
        List<Person> xuesheng;
        string name;
        int age;
        private static Person ins;
        public static Person Ins
        {
            get
            {
                if (ins == null)
                    ins = new Person();
                return ins;
            }
        }
        public void Changge(Person person)
        {

        }
        public bool ChaXun_Name(string name,out int index)
        {
            index = -1;
            for (int i = 0; i < xuesheng.Count; i++)
            {
                if (xuesheng[i].name==name)
                {
                    index = i;
                    return true;
                }
            }
            return false;
        }
    }

总结

  • 静态类是一种工具类,不能实例化,不能继承
  • 掌握单例设计模式思想和实现
  • 抽象类和抽象方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值