首页 > 代码库 > 面向对象 【封装】【继承】【多态】

面向对象 【封装】【继承】【多态】

创建一个新项目

using System;                                     ——
using System.Collections.Generic;        .
using System.Linq;                                .          -- 引用的命名空间
using System.Text;                             ——

namespace ConsoleApplication1                      -- 命名空间 (程序集) ConsoleApplication1 为命名空间名称

     
{
     class Program                                                -- 类  Program 是类名          
     {
            static void Main(string[] args)              -- 函数
           {
           }
      }
}

 

 访问修饰符  

                -- 写在 类 前

public 公共的             -- 访问权限是最高的

private 私有的           -- 只能在类的内部进行访问

internal 默认的          -- 当前命名空间(程序集)下可以访问

protected 被保护的    -- 当前类及它的派生类中可以访问

 

命名空间

一个解决方案下可以有多个项目,

每个目就是一个命名空间(程序集)

在每个项目下面添加的文件

引用不同命名空间下的类时,将命名空间名称添加到主页的引用命名空间里

           -- namespace ConsoleApplication1.wahaha

                                                         类所在命名空间

          -- using ConsoleApplication1.wahaha;

  类

 

 一个命名空间下可建多个类,一个类文件一般放一个类

   class Program      

                        -- program 类 是程序的主入口,各程序模块的汇总     

可对类进行封装                                  
     
      

 

 封装(对成员变量进行封装)

 定义类 ——成员变量——属性 

class  类名

{

      private 数据类型 _名称;    //成员变量,字段  --是私有的

      public 数据类型 名称         //属性

      {

             get{ return  _名称; }

             set{ _名称 = value; }                          

       }

 }

 

——在min函数中引用 (实例化对象)

类名   对象  =  new   类名();

             -- student  a  =  new   student ( );

例1、 对成员变量的封装

技术分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Student
    {
        private string _Code; //成员变量

        public string Code
        {
            get { return _Code; }
            set { _Code = value; }
        }

        private string _Name;

        public string Name
        {
            get { return _Name; }
            set
            {
                if (value =http://www.mamicode.com/= "")
                    _Name = "<暂无>";
                else
                    _Name = value;
            }
        }

        private DateTime _Birthday;

        public DateTime Birthday
        {
            get { return _Birthday; }
            set { _Birthday = value; }
        }

        public int Age
        {
            get
            {
                int end = 0;

                end = DateTime.Now.Year - _Birthday.Year;

                return end;
            }
        }

        private decimal _Score;

        public decimal Score
        {
            get { return _Score; }
            set
            {
                if (value > 100 || value < 0)
                    _Score = 0;
                else
                    _Score = value;
            }
        }

    }
}
View Code

   -- 属性的类型与字段的类型可以不同

   -- get  set  根据需要可以只有一个

 

例2、对方法封装

技术分享
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    public class Math1
    {
        public int JiaFa(int a, int b)
        {
            return a + b;
        }
    }
}
————————————————————-----
——对方法的引用
   Math1    m   =   new    Math1 ( );

    m.JiaFa( 10,20 );
View Code

 

继承

子类父类

父类 (基类)

子类 (派生类 超类)

一个子类只能有一个父类

子类可以继承全部父类中的public的方法和属性

案例

 

技术分享
namespace ConsoleApplication3
{
    public class Fly
    {
        public virtual string Flying()
        {
            return "我会飞!";              —— 父类
        }
    }
}
——————————————————

namespace ConsoleApplication3
{
    public class Bird : Fly
    {                                         ——子类

    }
}
View Code

 

多态

类的多种形态

有了继承才有了多态

virtual 写在访问修饰符之后(成员变量中),让方法变成 虚方法

可以被子类进行重写, override 只能重写函数体

案例

 

技术分享
namespace ConsoleApplication3
{
    public class Fly
    {
        public virtual string Flying()
        {
            return "我会飞!";
        }

    }
}
————————————————
namespace ConsoleApplication3
{
    public class feiji : Fly
    {
        public override string Flying()
        {
            return "屁股喷火就能飞!";
        }

    }
}
View Code

 

面向对象 【封装】【继承】【多态】