面向对象编程

访问修饰符

public                        无限制

private                      类内部访问

protected                  类和它的派生类可以访问

internal                      位于同一个程序集内可以访问   

对象构造器

       对象构造器又叫实例构造器或构造方法,对象构造器用来初始化对象的状态,如果类没有定义构造器,则编译器会自动生成一个无参的对象构造器,如果类已经定义了类型的对象构造器,则边一起不会自动为类生成一个无参的对象构造器。

类的对象构造器中可以使用this关键字调用本类中定义的其他对象构造器。

例如:

class Car
    {
        public string carName;
        public  string carColor;
        public Car(string carname)
        {
            this.carName = carname;
 
        }
        public Car(string carname,string carcolor):this(carname)
        {
            this.carColor = carcolor;
        }
    }

Car(string,string)对象构造器使用this关键字调用Car(string)构造器,在调用Car(string,string)对象构造器时,会先调用Car(string)构造器初始化对象状态,然后才会调用Car(String,string)

对象的状态和行为:字段方法和属性

方法重载:

       public void Run()
        {
            Console.WriteLine("汽车跑起来!");
        }
        public void Run(int i)
        {
            Console.WriteLine("{0}辆汽车跑起来",i);
        }
        public void Run(string name)
        {
            Console.WriteLine("{0}汽车跑起来!",name);
        }

属性封装字段

C#中的属性提供了对字段的封装,属性内部包含一个get访问器和一个set访问器。如果属性中只有get访问器,那么这个属性是只读的,如果属性中只有set访问器,那么字段是只写的,如果属性中既有set访问器又有get访问器,那么这个属性是可以可读可写的。set访问器中的Value是个关键字,代表当前要赋的值。

class Program
    {
        static void Main(string[] args)
        {
            Student student = new Student();
            student.Age = 24;
            student.Name = "霸气";
            Console.WriteLine("学生的年龄是:{0},学生的姓名是:{1}",student.Age,student.Name);
            student.Age = -1;
            student.Name = string.Empty;
            Console.WriteLine("学生的年龄是:{0},学生的姓名是:{1}",student.Age,student.Name);
            Console.ReadLine();
        }
    }
    class Student
    {
        private string name;
        private int age;
        public string Name
        {
            get
            {
                return name;
            }
            set
            {
                name = value.Length > 0 ? value : name;
            }
        }
        public int Age
        {
            get { return age; }

            set
            {
                age = value > 0 ? value : age;
            }

        }
    }
View Code

索引器

class Test

{

   private string[] Test=new string[5];

   public string this[int i]

{

     get{return Test[i]};

    set{Test[i]=value};

}

}  

用的时候this是类名 例如Test test=new Test();  test[0]

属性是对字段的修改           

继承:代码的重用

类可以从另外一个类继承,这就是说,这个类,拥有它继承的类的所有成员(初构造方法外)。利用类的继承机制,程序开发人员在已有类的基础上构造新类。

class Program
    {
        static void Main(string[] args)
        {
            Employee employee = new Employee();
            employee.name = "王小二";
            employee.timeCard();
            Manager manager = new Manager();
            manager.name = "王小三";
            manager.timeCard();
            manager.allot();
            Console.ReadLine();
        }
    }
    class Employee
    {
        public string name;
        public void timeCard()
        {
            Console.WriteLine("{0}已经考勤",name);
        }
    }
    class Manager : Employee
    {
        public void allot()
        {
            Console.WriteLine("{0}正在分配任务",name);
        }
    }
View Code
原文地址:https://www.cnblogs.com/lovezhangyu/p/3372796.html