基于类的封装[基础]


ExpandedBlockStart.gif基于类的封装
using System;
using System.Collections.Generic;
using System.Text;

namespace Con_1
{
    
class Program
    {
        
static void Main(string[] args)
        {
            Person per1 
= new Person();
            
//per1.Name = "刘德华";
            string n1 = per1.Name;   // F11调试get和set
            
//per1.Name = "张学友";  // 姓名应该只读

            
//Person per2 = new Person("刘德华");  //通过构造方法传值
            
//try
            
//{
            
//    string n2 = per2.Name;
            
//    Console.WriteLine(n2);
            
//    per2.Age = 500;         //验证姓名是否合法
            
//}
            
//catch (Exception ex)
            
//{
            
//    Console.WriteLine(ex.Message);
            
//}
            Person per3 = new Person("汪涵");
            per3.Birthday 
= DateTime.Parse("1972/2/12");
            
int i_age = per3.Age;  //根据生日得到年龄
            Console.WriteLine(i_age);
            
// 调用类的静态方法
            Person.Eating();
        }
    }
    
class Person
    {
        
// 所以的字段都必须私有化 private
        
// 私有字段首字母不必大些 name 或 _name
        private string name;
        
// 属性  public成员必须首字母大写 Name
        public string Name
        {
            
// 属性作用一:读写设置
            
//只有get访问器,则该属性只读
            get // 获得,读取
            {
                
return name;
            }
            
//只有set访问器,则该属性只写
            
//set // 设置,更改
            
//{
            
//    name = value;
            
//}
        }
        
//private int age;
        
// 属性作用二:验证输入数据的合法性和正确性
        
//public int Age
        
//{
        
//    get { return age; }
        
//    set 
        
//    { 
        
//        //age = value; 
        
//        if (value >= 0 && value <= 150)
        
//        {
        
//            age = value;
        
//        }
        
//        else throw new Exception("年龄输入不正确");
        
//    }
        
//}
        private DateTime age;

        
public DateTime Birthday
        {
            
//get { return age; }
            set { age = value; }
        }
        
// 属性作用三:隐藏细节(通过输入生日的日期 Birthday 获得年龄 Age)
        public int Age
        {
            
get 
            { 
                
//return age; 
                TimeSpan ts = DateTime.Now - age;
                
return (int)(ts.TotalDays) / 365;
            }
            
//set
            
//{
            
//    //age = value; 
            
//    if (value >= 0 && value <= 150)
            
//    {
            
//        age = DateTime.Now.AddYears(-value);
            
//    }
            
//    else throw new Exception("年龄输入不正确");
            
//}
        }
        
// 构造方法
        public Person()
        { }
        
// 构造方法重载
        public Person(string n)
        {
            
this.name = n;
        }
        
//public Person(string n, int a)
        
//{
        
//    this.name = n;
        
//    //this.age = a;
        
//}
        
// 普通方法
        public string Hi()
        {
            Console.WriteLine(
"你好");
            
return name;
        }
        
// 重载:方法名相同,参数列表不同。(与返回类型无关)
        
// 参数列表不同点: 1 个数不同
        
//                 2 类型不同
        
//                 3 顺序不同
        public string Hi(int i,string n)
        {
            
return name;
        }
        
public string Hi(string n,int i)
        {
            
return name;
        }
        
public string Hi(string n, int i,bool b)
        {
            
return name;
        }
        
// 错误:已定义了一个名为“Hi”的具有相同参数类型的成员
        
// 方法的重载与返回类型无关!
        
//public int Hi(string n, int i, bool b)
        
//{
        
//    return Age;
        
//}

        
// 静态方法
        public static void Eating()
        {
            Console.WriteLine(
"吃饭了。。。");
        }
    }
}


 

©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值