面向对象基础
面向对象的概念
封装性:将对象的特征和行为封装起来,不需要让外界知道具体实现细节
继承性:类与类之间的关系,通过继承可以在无需重新编写原有类的基础上,对原有类的功能进行扩展
多态性:同一操作用于不同的对象,和产生不同的执行结果。
属性的声明
class Program
{
static void Main(string[] args)
{
Student stu = new Student();
stu.Age = -30;
stu.Gender = "女";
stu.Introduce();
Console.ReadKey();
}
public class Student
{
private string name = "zhang shan";
//只读属性,有get无set
public string Name
{
get {
return name; }
}
private int age;
//读写属性,有get,set对
public int Age
{
get {
return age; }
set
{
if (value <= 0)
{
Console.WriteLine("不合法");
}
else
{
age = value;
}
}
}
//属性的简略声明
public string Gender
{
get;
set;
}
public void Introduce()
{
Console.WriteLine("大家好,我叫{0},今年{1}岁,我是{2}生的,",Name, Age, Gender);
}
}
}
访问修饰符
public:
最高访问级别,访问不受限制
protected:
保护访问级别,受保护的成员可以由自身及派生类访问
internal:
内部访问级别,只有在同一个程序集中,内部类型或许成员从可以访问
protected internal:
内部保护级别,访问仅限于当前程序集,可由自身及派生类访问
private:
私有访问,最低访问级别,只有在声明他们的类和结构里从可以被访问
构造方法
构造方法概念:
实例化一个类的对象后,
如果要给这个对象的属性赋值,需要直接访问该对象的属性,
如果想在实例化对象的同时为这个对象赋值,就可以通过构造方法实现。
构造方法是类的一个特殊成员,他会在类实例化对象时,自动调用,为对象开辟内存空间,并对类的成员进行初始化。
满足条件:
方法名与类名相同,
在方法名的前面没有返回值类型的声明,
在方法中不能用return语句返回值。
定义无参构造方法
static void Main(string[] args)
{
Person p = new Person();
Console.ReadKey();
}
public class Person
{
//Person类的构造方法
public Person()
{
Console.WriteLine("无参的构造方法被调用了");
}
}
定义有参的构造方法
class Program
{
static void Main(string[] args)
{
Person p = new Person(20);
p.Speak();
Console.ReadKey();
}
public class Person
{
int age;
public int Age {
get; set; }
//Person类的构造方法
public Person(int a)
{
Age = a;
}
public void Speak()
{
Console.WriteLine("I am {0} years old.!", Age);
}
}
}
构造方法的重载
class Program
{
static void Main(string[] args)
{
}
public class Person
{
private string name;
public string Name
{
get;
set;
}
private int age;
public int Age
{
get;
set;
}
public Person(string conName,int conAge)
{
Name = conName;
Age = conAge;
}
public Person(string conName)
{
Name = conName;
}
public void Speak