封装 继承

Posted 涤荡轮回

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了封装 继承相关的知识,希望对你有一定的参考价值。

访问修饰符:
pubulc:公共的,只要引用了命名空间,就可以随意进行访问
private:私有的,只有当前类内部才可以访问

internal:内部的,当前程序集内可以访问,程序集就是命名空间,此修饰符是默认的
protected:被保护的,当前类和它的子类才可以访问


命名空间:
也叫程序集,项目中每一个文件夹都是一个独立的命名空间
如果要使用某一个命名空间下的类文件,那么必须首先引用此命名空间

-------------------------------------------------------------------
封装;
打包,封起来,保护起来

private int _Ids; - 私有的成员变量

public int Ids - 属性,封装基本结构
{
get{ return _Ids; }
set{ _Ids = value; }
}

一个成员变量可以有很多个属性

属性返回类型可以是任意类型,不是必须要与成员变量类型相同

属性可以是只读的,也可以是只写的,也可以两者都有

------------------

namespace ConsoleApplication46
{
public class Student
{
private string _Code;
private string _Name;
private decimal _Score;
private DateTime _Birthday;
private string _Sex;

public string Sex
{
get { return _Sex;}
set
{
if (value == "男" || value == "女")
{
_Sex = value;
}
else
{
_Sex = "您的输入有误";
}
}
}


public DateTime Birthday
{
get { return _Birthday; }
set { _Birthday = value; }
}

public string BirthdayStr
{
get { return _Birthday.ToString("yyy年MM月dd日"); }

}

 

 

public decimal Score
{
get { return _Score; }
set{
if (value >= 0 && value <= 100)
{
_Score = value;
}
else
{
_Score=0;
}

}

}


}
}

 

 

namespace ConsoleApplication46
{
class Program
{
static void Main(string[] args)
{
Student s = new Student();
s.Score = 90.5m;
s.Birthday = DateTime.Now;

s.Sex = "男";
Console.WriteLine(s.Sex);

Console.WriteLine(s.BirthdayStr);
Console.ReadKey();

--------------------------------------------------------------------------------------------------------------------------

继承:
子类可以继承父类所有的public方法和属性

父类不可以调用子类的方法和属性,哪怕是public的


子类可以转换成父类,转换成的这个父类也可以转换回相应子类

子类转换成父类,这个父类不可以转换成其它的子类

父类

子类 - 某个类的子类,派生类,超类

Plane这个类是Fly的派生类,
Plane这个类派生自Fly

------------------------------------------------------------

namespace 继承
{
class Program
{
static void Main(string[] args)
{
Fly f = new Fly();
string s = f.Fly1();
Console.WriteLine(s);

Bird b = new Bird();
string bb = b.Fly1();
Console.WriteLine(bb);


Plane p = new Plane();
string pp = p.Fly1();

Console.WriteLine(pp);

Console.ReadLine();

 

namespace 继承
{
public class Fly
{
public string Fly1()
{
return "我可以飞行";
}
}
}

 

namespace 继承
{
public class Bird:Fly
{

}

 

namespace 继承
{
public class Plane:Fly
{

}
}

 

强转

Bird b =new Bird();

Fly f =(Fly)b;        //b这个类 强制转换成父类 fly ,转换后 不能用bird类的 属性

Bird bb =(Bird)f;      //  转换成的这个父类 也可以转换回去,(转回到相应的子类)

 

以上是关于封装 继承的主要内容,如果未能解决你的问题,请参考以下文章

继承打破封装? [关闭]

详细的解释下类的封装性,抽象性,继承性和多态性。

OOP三个基本特征:封装继承多态

JAVA面向对象,继承、封装、多态

JavaSE——:封装继承多态

JS面向对象三大特征:封装、继承、多态