zoukankan      html  css  js  c++  java
  • 面向对象编程

    访问修饰符

    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
  • 相关阅读:
    POJ 1426 Find The Multiple(数论——中国同余定理)
    POJ 2253 Frogger(Dijkstra变形——最短路径最大权值)
    POJ 3790 最短路径问题(Dijkstra变形——最短路径双重最小权值)
    POJ 3278 Catch That Cow(模板——BFS)
    HDU 1071 The area
    HDU 1213 How Many Tables(模板——并查集)
    POJ 1611 The Suspects
    light oj 1214 Large Division
    POJ 1258 Agri-Net(Prim算法求解MST)
    POJ 2387 Til the Cows Come Home(模板——Dijkstra算法)
  • 原文地址:https://www.cnblogs.com/lovezhangyu/p/3372796.html
Copyright © 2011-2022 走看看