C#关于对象

static关键字的作用在这里复习一下:
1.修饰成员变量时,存于对象被所有对象共享,常驻内存。用类名直接访问。
2.修饰构造函数时,此构造函数不是为了创建对象因此不需要限定修饰符。只加载一次用于初始化类的静态成员变量。
3.修饰类时,不能被实例化只能有静态成员。
4.修饰方法时候,就是可以使用"类名.方法名"的方式操作方法。

属性和字段:
属性就是getset方法操作的字段,属性可避免出现非法数据。
无视父类的成员创建一个新成员用new关键字。
属性也是外界访问字段的一个入口,如下:

    public class Lion:Animal
    {
        private string hairColor = "gold";
        public string HairColor  #这里设置getset方法 set中使用value。
        {
            get
            {
                return hairColor;
            }
            set
            {
                hairColor = value;
            }
        }

继承:
共有字段写在父类当中,在子类构造函数后面使用base()赋值。

把对象装在一个集合里便于访问:
例如新建Animals类用来装Animal和其子类,需要use system.Collection包并让Animals类继承自CollectionBase。
重写Add和Remove等方法即可,用List新加入传入的Animal am,之后就可以在使用的时候foreach遍历了。

比较两个对象的大小
运算符重载技巧,父类中添加

        public static bool operator >(Animal animal1,Animal animal2)
        {
            return (animal1.age > animal2.age);
        }
        public static bool operator <(Animal animal1,Animal animal2)
        {
            return (animal1.age < animal2.age);
        }

注意每次写要写一组才有效,其他的逻辑依然写在这里。之后可以用运算符来比较两个对象了。

对象安全的强转
使用as,

public void MilkCow(Animal myAnimal)
{
	Cow myCow = myAnimal as Cow;
	if (myCow!=null) #如果不是奶牛类则为null值
		myCow.Milk(); #只有奶牛能产牛奶
}

你可能感兴趣的:(C#与点net)