• C#学习笔记(4)


    今天先把上几个系列的做一个总结,在这里给出一个面向对象版的简易计算器(重在理解面向对象的思想)。

    1.首先定义一个计算器类(类库)(Calculator)

    public abstract class Calculator
        {
            public int Number1
            {
                get;
                set;
            }
            public int Number2
            {
                get;
                set;
            }
            //2个构造函数
            public Calculator()
            {
    
            }
            public Calculator(int n1,int n2)
            {
                this.Number1 = n1;
                this.Number2 = n2;
            }
            public abstract int Jisuan();
    

     这里的Jisuan()方法,因为不知道将来要进行哪种运算,所以设计成抽象方法(此时抽象方法所在的类也必须是抽象的)。具体实现由具体类来重写此方法。

    2.接着新建一个类库(加法):

    public class AddFa : Calculator
        {
            public AddFa(int n1,int n2):base(n1,n2)
            {
    
            }
            public override int Jisuan()
            {
                return Number1 + Number2;
            }
        }
    

     它重写了父类Calculator类中的方法Jisuan(),因为父类中有有参数的构造函数,就不用再写了,调用父类的即可(继承的好处).

    3.最后调用加法运算时,只需实例化加法类,并调用Jisuan()方法即可实现。(四则运算中的其他类库依次类推)

    值类型和引用类型:

    所谓值类型就是值存储在栈上的类型。C#中值类型很多:int,float,decimal,double……

    引用类型是值存储在堆上,栈上保存的是值在堆中的堆地址,比如:String.

    值传递和引用传递;

    值类型作为参数传递时,栈上拷贝的是值的一个副本,改变副本的值不影响原内容;

    引用类型作为参数传递时,栈上拷贝的是堆地址,改变副本的值影响原内容。(关键字:ref)

    注意:out关键字又不同与ref,out要求参数在方法外可以不初始化(不赋值,赋值也没用),在方法内必须对out参数赋值,方法执行完成时,out参数会将值带出来。

  • 相关阅读:
    网页日历显示控件calendar3.1
    切换“使用被动式FTP”
    href="javascript:xxx(this);"和onclick="javascript:xxx(this);"的区别
    CSS布局--上中下布局(上下固定,中间自适应)
    css字体颜色动画
    怎么让jQuery支持swipe事件
    html 5 canvas
    javascript面向对象
    WEB相关存储方式
    angularjs
  • 原文地址:https://www.cnblogs.com/chens2865/p/3484718.html
Copyright © 2020-2023  润新知