2018.05.05学习笔记(面向对象基础学习)

面向对象概念
①特征即属性,行为即方法
②对象:看得见,摸得着,具体的,特指的
③类:类是模子,确定对象将会拥有的特征(属性)和行为(方法),是对象的类型。
类不占内存,对象才占内存


类的定义
[访问修饰符] class 类名
{
    成员
    ...
}


类的实例化
语法: 类 实例名 = new 类();
类的成员访问:  实例名 属性 实例名.方法名();

DotNet中类(class)与结构(struct)的异同
Class可以被实例化,属于引用类型,是分配在内存的堆上的。类是引用传递的。
Struct属于值类型,是分配在内存的栈上的。结构体是复制传递的。Int32,Boolean等都是结构体


C#中比较4种修饰符的访问权限
private:私有成员,在类的内部才可以访问
protected:保护成员,该类内部和继承类中可以访问
public:公共成员,完全公开,没有访问限制
internal:当前程序集内可以访问


属性
属性是为了保护与之相对应的字段的,保证对字段的读取和赋值符合要求。属性可分为读写,只读,只写。允许外部访问的变量一定要声明为属性

比较字段和属性



构造函数
语法:public 类名(参数可以有可以无)
{}
构造函数可以重载


相关练习1

写一个Ticket类,有一个距离属性(本属性只读,在构造方法中赋值),不能为负数,有一个价格属性,价格属性只读,并且根据distance计算价格Price(1元/公里):
0-100公里  票价不打折
101-200公里 总额打9.5折
201-300公里 总额打9折
300公里以上 总额打8折
用一个方法,可以显示这张票的信息

Ticket.cs中代码
namespace 类的练习
{
    public class Ticket
    {
        public Ticket(int distance)
        {
            if (distance<0)
            {
                distance = 0;
            }
            this._distance = distance;
        }

        int _distance;
        public int Distance
        {
            get { return _distance; }
        }

        double _price;
        public double Price
        {
            get
            {
                if (_distance <= 100)
                {
                    return _distance * 1.0;
                }
                else if (_distance <= 200)
                {
                    return _distance * 0.95;
                }
                else if (_distance <= 300)
                {
                    return _distance * 0.9;
                }
                else
                {
                    return _distance * 0.8;
                }

            }
        }

        public void Show()
        {
            Console.WriteLine("{0}公里的价格为{1}",this.Distance,this.Price);
        }
    }
}

Program.cs中的代码
        static void Main(string[] args)
        {
            Ticket t = new Ticket(90);
            t.Show();
            Console.ReadKey();
        }


猜你喜欢

转载自blog.csdn.net/delicious_life/article/details/80209160