zoukankan      html  css  js  c++  java
  • 第12天C#基础静态、属性和设计模式

    属性

    概念

    就是为了对字段的赋值进行修正。起到保护字段的作用,外界不能轻易的访问到字段。本质就是两个方法(可读、可写)

    定义方法

    当属性被取值的时候,会调用get块,等到的值是get块中返回的值

    当属性被赋值的时候,会调用set块,赋进去的值存在变量value里面

            int age;//不安全
            int atk;
            //函数 构造函数 属性
            public int Age
            {//当属性被赋值的时候 调用set块 当属性被取值的时候调用get块
                get
                {
                    //必须要有返回值
                    Console.WriteLine("这是get块");
                    return age;
                }
                set
                { //只读 只写
                    //Console.WriteLine(value);
                    if (value < 0)
                    {
                        value = 0;
                    }
                    if (value > 100)
                    {
                        value = 100;
                    }
                    age = value;
                    Console.WriteLine("这是set块");
                }//语句块
            }

    属性的优劣

    优点

    劣势

    属性的单读单写

    我们可以对属性的某一个块指定修饰符,如:在一个公共访问权限下声明一个私有访问的Set块。

    单写

     public string Sex
            {
                set {
                    if (value!=""&&value!="")
                    {
                        //不满足
                        value = "?";
                    }
                    sex = value;
                }
            }

    单读

            private int distance;
            private float price;
    
            public Ticket(int distance)
            {
                this.distance = distance;
            }
            public int Distance
            {
                get
                {
                    
                    return distance<0?0:distance;
                }
    
               
            }

    自动属性

    静态类

    概念

    在声明类的同时使用static修饰符进行修饰的类即为静态类

        static class Test   //static定义的类是静态类
        {
            //int name;  //静态方法里不能有非静态变量,方法
            public static string name;
        }

    静态类只允许有静态成员(静态方法,静态字段,静态属性)

    静态类不能实例化

    静态类中的方法是通过类名来调用

     总结

    1.静态类中不能有普通的属性或方法,只能在类中定义静态的方法或属性

    2.普通类中可以有静态属性或静态方法,访问方式同样不需要实例化,直接可以用:类名+"."+属性/方法名的方式访问

        class Test
        {
            public static string testName;
    
           
            static public void TestStaticFun()
            {
                Console.WriteLine("我是非静态类中的静态方法");
            }
            public void TestNotStatic()
            {
                Console.WriteLine("我是非静态中的非静态方法方法");
            }
        }
        
        class Program
        {
            
           
            static void Main(string[] args)
            {
                //Test test = new Test();     //静态类不能被实例化
                Test.testName = "易风";         //非静态类的静态属性  静态类名.属性(方法)
                Test.TestStaticFun();           //非静态类中的静态方法可以不实例化直接访问
                Test.TestNotStatic();           //费静态类中的非静态方法必须实例化才能访问

    3.静态方法中只能调用静态属性或者静态方法

    4.非静态方法里可以调用静态方法/成员

    设计模式

    单例模式

    用处

    确保在整个应用程序中只有一个实例

    提供一个全局访问的点来访问这个唯一实例

    特点

    只有一个实例

    必须自行创建这个实例

    必须向整个系统提供这个实例

    实现方法

    继承

    什么是继承

    继承是面向对象程序设计中最重要的概念之一。继承允许我们根据一个类来定义另一个类,这使得创建和维护应用程序变得更容易。同时也有利于重用代码和节省开发时间。

    一个类继承另一个类:

    1.被继承的类:基类、父类

    2.新的类:派生类、子类

    如何继承

        class Person
        {
            protected string name;
            public int age;
            private int atk;
        }
        //格式        访问修饰符+class+派生类/子类名:基类/父类名
        class Student:Person        //继承Person类
        {
            
        }

    继承注意

    一个类只能直接继承自一个基类。

    派生类保留了基类的所有属性和方法。

    如果基类的访问域不允许,派生类无法访问其属性和方法

    继承有参构造函数方法

        class Person
        {
            protected string name;
            public int age;
            private int atk;
    
            public Person(string name, int age)
            {
    
            }
        }
        //格式        访问修饰符+class+派生类/子类名:基类/父类名
        class Student:Person        //继承Person类
        {
            public Student(string name, int age):base(name,age)     //base()把name和age传给父类
            {
    
            }

    字符串格式化

    int num = 3;
    Console.WriteLine(string.format("{0}是int类型",num));
  • 相关阅读:
    kubeadm部署k8s v1.18.6版本
    harbor
    kubectl常用命令
    日常运维知识点
    CentOS6.5搭建oracle11g RAC
    linux(mint)下刻录镜像到光盘
    aspectj
    NoSql系列目录
    在线考试系统源码(题库抽题&自动阅卷打分)
    java问卷调查系统源码(java+mysql)
  • 原文地址:https://www.cnblogs.com/yifengs/p/14070129.html
Copyright © 2011-2022 走看看