面向对象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。

 

 

完!!!!

 

posted @ 2016-09-08 16:08  冲天小肥牛  阅读(129)  评论(0编辑  收藏  举报