第十四讲:类成员之方法与静态

来源:互联网 发布:ubuntu core 教程 编辑:程序博客网 时间:2024/06/05 09:49
自动属性必备读写权限

方法
    什么是方法?
        方法是包含一系列语句的代码块
        可以指定代码块到底允许被谁访问  --访问修饰符
        可以让代码块执行完了再汇报一下  --返回值类型
        用一个名字来调用这一块代码      --方法名
        在调用的时候可以附带参数        --方法参数
        这“块”代码可大可小              --不限制代码量
        可以让代码块多几个兄弟姐妹      --方法重载
        
    语法
        访问修饰符 返回值类型 方法名(参数1,参数2...)
        {
            方法体;
        }
    参数
    值传递与引用传递的异同点
        值类型传送是参数的一个副本
        引用类型传送的是参数的引用
        
        引用传递的两个修饰符:
            强迫引用传递 ref修饰,调用时也不能省略ref修饰符
        
            初始化并传递着,out修饰符,因为实例化一个对象后,必须对其进行初始,为了节省这一环节,可使用此修饰符
            
            ref和out 有区别,使用ref型参数时,传入的参数必须先初始化,而对于out型参数而言,则要在方法内完成初始化,这是因为ref可以反参数的数值传进去,而out参数会在传进去前先将参数清空。

以上是课堂笔记,下面我把我的实例操作代码及执行结果贴出来:

users类:

    public class Users    {        string _name;//姓名字段        public string Name //姓名属性        {            get { return _name; }            set { _name = value; }        }        int _age; //年龄字段        public int Age //年龄属性        {            get { return _age; }            set { _age = value; }        }        /// <summary>        /// 一个空构造函数        /// </summary>        public Users() { } //空构造函数        /// <summary>        /// 带参数的构造函数        /// </summary>        /// <param name="s"></param>        /// <param name="i"></param>        public Users(string s, int i)        {            //此构造函数的作用就是初始类级变量            _name = s;            _age = i;        }        /// <summary>        /// 写个获取个人信息的方法        /// </summary>        /// <returns></returns>        public string getInfo()  //注意语法结构,我这个木有带参数        {            return "姓名:" + _name + ",年龄:" + _age.ToString() + "。";        }        /// <summary>        /// 值传递        /// </summary>        /// <param name="i">参数i</param>        /// <returns>返回值类型</returns>        public void returnI(int i)        {            i=i + 10;        }        /// <summary>        /// 引用传递        /// </summary>        /// <param name="i">强迫引用初始化参数I</param>        /// <returns>返回值类型</returns>        public void returnRef(ref int i)        {            i= i + 10;        }        /// <summary>        /// 非初始化引用传递        /// </summary>        /// <param name="i">未初始化强迫引用参数i</param>        /// <returns>返回值类型</returns>        public void returnOut(out int i)        {            i = 10;        }    }

前台代码:

namespace WF14{    public partial class Form1 : Form    {        public Form1()        {            InitializeComponent();        }        /// <summary>        /// 点击按钮获取用户信息        /// </summary>        /// <param name="sender"></param>        /// <param name="e"></param>        private void btnInfo_Click(object sender, EventArgs e)        {            //获取用户输入            string str = tbName.Text;            int i=0; //这里要注意变量作用域引发的问题            try //当用户输入非值类型数据时,进行异常处理            {                i = Convert.ToInt32(tbAge.Text);            }            catch (Exception ex)            {                MessageBox.Show(ex.Message);                //清空用户错误输入信息                tbAge.Text = "";            }            //实例化用户类            Users user = new Users(str,i);            //返回到前台显示            lblInfo.Text = user.getInfo(); //调用获取用户信息的方法            //值传递的结束            int ri = 100;            lblZhi.Text = "调用方法前ri的值是:" + ri.ToString();            user.returnI(ri); //调用方法对i值进行改变            lblZhi.Text += ",调用方法后ri的值是:" + ri.ToString();            //下面测试强迫引用的两个关键的使用            lblRef.Text = "调用方法前ri的值是:" + ri.ToString();            user.returnRef(ref ri);            lblRef.Text += ",调用方法后ri的值是:" + ri.ToString();            //定义一个非初始化的整型变量            int ro;            user.returnOut(out ro);            lblOut.Text = "未初始化的ro变量调用方法后的值是:" + ro.ToString();        }    }}

执行结果:


上面是我录制的GIF小图片,我这里测试没问题,不知道盆友们是否能到它在动。要不我再载个图


多实践多动手。

    静态类与静态类成员
        静态类
            不依赖于对象,通常用作工具类
            使用static关键字修饰
            
        特点:
            它们仅包含静态成员
            它们不能被实例化
            它们是密封的,不能被继承
            它们不能包含实例构造函数
            
        静态成员
            非静态类中也可以放置静态成员,而静态类中只能放静态成员
            
            静态成员用static关键字修饰
            
            调用静态成员无需实例化类对象,直接用类名即可调用。
            
            调用静态类或静态成员时都不能通过实例化对象来调用。

0 0
原创粉丝点击