首页 > 代码库 > 面向对象——封装和继承

面向对象——封装和继承

一、封装

目的保护类,让类更加安全。

做法:让类里面的成员变量变为私有(即访问修饰符)的,做相应的方法或者属性去间接的操作成员变量

※访问修饰符

private 私有的              只能在该类中访问

protected 受保护的       只能在该类和它的子类中访问

public 公有的                在任何地方都可以访问

internal 内部的、默认的    程序集中可以访问,程序集就是命名空间

 

构造方法(函数):

作用:造对象所要调用的方法,用来创建对象

      每一个类都有一个构造方法,不写也有只不过看不到而已

特殊性:写法特殊 (方法名=类名;没有返回值)

      执行时间特殊(创建对象时执行)

用途:可以对成员进行初始化

 

封装:
private 数据类型 _名字; --成员变量

public 默认一致 名字 --属性
{
  get{ return _名字; }
  set{ _名字 = value; }
}

属性可有多个,可以只放get或set

 

例:

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

namespace 封装
{
    class Program
    {
        static void Main(string[] args)
        {
            student s = new student();
            s.age = 25;
            s.name = "张三";
            Console.WriteLine(s.age+" "+s.name);
            Console.ReadLine();
        }
    }
}


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 封装
{
    class student
    {
        public student()
        {

        }
        /// <summary>
        /// 学号
        /// </summary>
        private string _code;

        public string code//属性
        {
            get { return _code; }
            set { _code = value; }
        }
        /// <summary>
        /// 姓名
        /// </summary>
        private string _name;

        public string name
        {
            get { return _name; }
            set { _name = value; }
        }
        /// <summary>
        /// 性别
        /// </summary>
        private string _sex;

        public string sex
        { 
            set 
            {
                if (value =http://www.mamicode.com/= "")
                { _sex = ""; }
                else if (value =http://www.mamicode.com/= "")
                { _sex = ""; }
                else
                { _sex = "错误"; }            
            }
            get { return _sex; }

        }
        /// <summary>
        /// 年龄
        /// </summary>
        private int _age;

        public int age
        {
            set
            {
                if (value >= 18 && value <= 150)
                {
                    _age = value;
                }
                else
                {
                    _age = 0;
                }
            }
            get { return _age; }
        }    
    }
}
View Code

 

二、继承

子类可以继承父类的一切

特点:单继承   一个子类只能有一个父类  一个父类可以有多个子类

C#特殊点:所有类的祖先都是object

base关键字:在子类中代表父类对象,用法和this关键字相同         

                   如果父类有构造方法,那么子类也要有构造方法,如果父类构造需要参数,那么子类构造也必须有相应的参数。         

                   子类构造后面可以通过base调用父类的构造方法         

                   public China(string m):base(m) {}

 

面向对象——封装和继承