面向对象4-2 封装性 继承性
一、封装性
访问修饰符:
public:访问权限最高,在命名空间内随意访问!
private:访问权限最低,只有当前类的内部才可以访问。
internal:内部的。在当前程序集(命名空间,即namespace)内可以访问。是程序默认修饰符!
protected;在当前类和他的子类才可以访问!
ps:命名空间:也叫程序集,项目中的每一个文件夹都是一个独立的命名空间。如果要使用某一个命名空间下的类文件,必须首先引用此命名空间!!
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
以前命名类的时候都是
public int code;
public string name;
然后在main函数里面先进行实例化,然后就可以随意引用code,name属性。这样子,任何人都可以随便访问。为了防止这种现象发生,我们就要对其进行封装,要这样进行封装:
private int _code;//将public换成private public int code //建立一个变量code,通过这个变量来访问_code { get{return _code;}//输出的结果。 set{_code=value;}//进行赋值,value为赋的值。可以再里面的value进行条件设置 }
set {}和get{}可以只有一种!!同时也可以有多个public
总结封装性:
一个成员变量可以有很多个属性;
属性返回值可以是任意类型,不是必须要与成员变量类型相同;
属性可以是只读的,也可以只写的,也可以是两者兼备的!
二,继承性
在同一个namespace下面建一个类,如fly
public string fly1() { return "我可以飞"; }
在main函数里面:
fly f=new fly(); string a=f.fly1(); console.write(a);
输出值为:我可以飞。
然后进行继承:
新建一个bird类
在bird这个类里面这样写:
public string bird:fly //注意:“:fly” { //什么也没写 }
这样bird就继承了fly的所有属性(除了private)。
bird a=new bird(); string b=a.fly1(); console.write(b);
输出结果为:“我可以飞”。
=======
子类父类的转换:
上面中,fly是bird的父类,bird是fly的子类;
//子类强制转换为父类 bird b=new bird(); fly f=(fly) b; //f可以调用bird里面的属性和方法。
//f(此时是跟fly同为父类)也可以再次次转成以前相应的子类 bird bb=(bird) f; //bb可以调用bird里面的属性和方法
继承性总结:
子类可以继承父类所有的方法和属性(private 除外);
父类不可以调用子类的方法和属性,哪怕是public;
子类可以转换成父类,转换成的父类也可以转换成相应的子类,但是不能转换成其他的子类。如父类1,子类有两个子类:1.1 和1.2,1.1可以转换成父类1,然后1也可以再次转换成1.1,但是不能转换成1.2。
完!!!!