C#面向对象

概念:面向对象是把要解决的问题按照一定的规划划分为多个独立的对象,然后通过调用对象的方法来解决问题。这样,当应用程序功能发生变动时,只需要修改个别的对象就可以了。使用面向对象编写的程序具有良好的可移植性和可扩展性。

类的定义

在程序中创建对象,首先需要定义一个类,在定义类时需要用到关键字class声明。

下面我通过两个例子来学习如何定义一个类:

namespace Demo1
{
    /// <summary>
    /// 定义学生类
    /// </summary>
    public class Student
    {
        //敏感数据,private 缺省
        //私有成员的命名 通常加_前缀
        private string _id;//学号
        private string _name;//姓名
        private DateTime _birthday;//生日
        private bool _sex;//性别

        //构造函数方法是创建对象(实例)时自动执行的方法
        //类的构造函数来初始化
        //方法名与类名相同,形参可自定义
        public Student(string id,string name,DateTime birthday,bool sex)
        {
            _id = id;
            _name = name;
            _birthday = birthday;
            _sex = sex;
        }

        //构造方法可定义多个,参数不能相同
        public Student()
        {
            _id = "";
            _name = "";
            _birthday = DateTime.MinValue;
            _sex = true;
        }
        public void PrintStuInfo()
        {
            Console.WriteLine($"学号:{_id},姓名:{_name},性别:{(_sex ? "男" : "女")},生日:{_birthday.ToString("yyyy-MM-dd")}");
        }

    }
}
 

namespace Demo1
{
    class Program
    {
        static void Main(string[] args)
        {
            Student stu1 =
                  new Student("2022001", "张无忌", DateTime.Parse("2004-01-12"), true);
            Student stu2 =
                  new Student("2022002", "赵敏", DateTime.Parse("2004-11-12"), false);
            Student stu3 =
                  new Student("2022003", "殷黎", DateTime.Parse("2004-05-08"), true);
            Student stu4 =
                  new Student("2022004", "周芷若", DateTime.Parse("2004-10-24"), false);
            //使用无参的构造方法来创建实例stu5
            Student stu5 = new Student();

            stu1.PrintStuInfo();
            //不能对私有数据进行修改 stu1._name
            stu2.PrintStuInfo();
            stu3.PrintStuInfo();
            stu4.PrintStuInfo();
            stu5.PrintStuInfo();
            
            Console.ReadKey();
        }
    }
}

以上代码运行后的结果如下:

 

namespace Demo2
{
    /// <summary>
    /// 银行账号类的定义
    /// </summary>
    public class BankAccount
    {
        private string _accountID;//账号
        private decimal _balance;//余额
        private DateTime _lastTransactionDatetime;//最后的交易时间

        //通过定义字段来对成员进行读写
        public decimal Balance
        {
            get { return _balance; }
            set { _balance = value; }
        }

        //:this("",0M) 表示调用类自己本身的两个参数的构造方法
        public BankAccount(string accountID):this(accountID,0M)
        {

        }

        //this表示类自己本身
        public BankAccount(string accountID,decimal balance)
        {
            this._accountID = accountID;//初始化账号
            this._balance = balance;   //初始化余额
            this._lastTransactionDatetime = DateTime.Now;//初始化为当前系统的时间
        }
        //打印交易内容
        public void PrintAccountInfo()
        {
            Console.WriteLine($"账号{this._accountID}\t余额{this._balance:c2}\t最后交易时间{this._lastTransactionDatetime}");
        }
    }
}

namespace Demo2
{
    class Program
    {
        static void Main(string[] args)
        {
            BankAccount ba1 = new BankAccount("1234567890", 1000M);
            ba1.PrintAccountInfo();
            ba1.Balance = 1500M;
            ba1.PrintAccountInfo();

            //调用一个参数的构造方法,它会自动调用两个参数的构造方法来初始化
            //BankAccount ba2 = new BankAccount("12312321321");
            //ba2.PrintAccountInfo();

            Console.ReadKey();
        }
    }
}

运行结果如下:

 以上例子都说明了面向对象的的好处,操作过程简单明了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值