C#面向对象 类的继承

时间:2023-03-09 18:07:04
C#面向对象  类的继承

1、类的访问权限:

public;跨程序集,命名空间,必须被using引用;

internal:默认当前命名空间;

2、类成员的访问权限:

private:私有的,只能当前类;

protecte:受保护的,当前类以及子类

public:公共的,跨程序集;

internal:当前命名空间,但是随着类的范围而定,当类为public时,那么internal

成员也可以在其他的命名空间访问

3、如果某个类没有任何可访问性关键字在它的前面,则它就是默认internal

但是,在类中,如果省略类成员的可访问性关键字,默认为private。

  class Animal
{
public string name; public void huidong()
{
Console.WriteLine("动物会动");
}
}
class cat : Animal
{
public string shangshu; public void hanshu()
{
Console.WriteLine("猫会上树");
}//如果父类中有protected成员,可以在子类中直接访问
} cat c = new cat();
c.name = "猫";//子类继承父类,一个子类只能继承一个父类
//当子类继承父类之后,就拥有了父类的公共方法和属性
c.shangshu="上树";
c.huidong();
c.hanshu();
Animal a = c;//子类对象可以直接转换成父类对象 cat c1 = (cat)a;//但是父类不能直接转换成子类对象,必须显示转换
//当父类对象是有子类对象转换来的时候,父类对象不拥有 子类的属性和方法
//例;父类 a 是由子类 c 转换来的,a 不拥有c的属性 c1.name = "老猫";//只有子类对象转换来的父类对象,才能转换为子类对象
Console.WriteLine(c.name);
Console.ReadLine();
/*对象的等号赋值:
Animal a = c; cat c1 = (cat)a; c1.name = "老猫";
以类cat创建一个对象c(包含cat 的属性和方法),a=c代表对象a和对象c具有相同的指向,但是由于父类
不能拥有子类的属性和方法,所以a只能拥有父类的属性和方法;
当由子类转换来的父类转换回子类时,对象c1和对象a具有相同的指向
*/