在父类的方法中写一个虚方法需要加关键字virtual例如:public virtual void Show()
通过虚方法实现多态就是在子类中重写虚方法,如果没有重写虚方法那么就执行虚方法,如果重写了虚方法那么就执行重写后的虚方法
一般应用语法如下:
(Person是父类,Student,Teacher是子类,虚方法是show)
Person p=new Student();
p.show();
Person p1=new Teacher();
p.show();
这样写就实现了多态,而用多态就是在子类重写父类中的虚方法
子类不重写虚方法也可以直接用父类的虚方法
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
类的特性之二继承:
继承的特性:
1,单根性:就是一个子类只能继承一个父类,如果一个类没有继承任何一个类那么就默认继承object类
2,传递性:object是所有的基类,Person是父类,Student是子类,Person默认的继承object类,Student继承Person类,那么Student可以继承object类中的方法和一些特性,这就是传递行相当于把一些东西通过中介传到第三者的手中,而第三者可以去运用
继承中关于构造函数的问题:
1,在继承中构造函数不能被继承
2,子类中的构造函数会默认的继承父类中的无参的构造函数但子类中的构造函数也必须是无参的或者在父类中写一个无参的构造函数
如果子类中的构造函数是有参的那么父类中的构造函数也必须是有参的可以通过:base去调用父类中某个有参的构造函数;语法如下:
public Student(string name, int age,char sex):base(name,age)
{
this.sex=sex;
}
base的作用就是在子类中调用父类中的构造函数
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
base和this的用处
this的作用:在当前类的构造函数后面可以通过:this来调用当前类自己其它的构造函数;语法如下:
Public Person(string name,int age,char sex)
{
this.name=name;
this.age=age;
this.sex=sex;
}
Public Person(string name):this(name,0,null)
{
数字类型的一般默认为0,string类型的默认为null ,bool类型的默认为flase
}
通过base和this可以调用当前类中的成员:
1,一般情况下如果子类继承了父类的成员那么在子类中可以通过this.成员或base.成员访问,除非父类中的成员在子类继承后又重写了
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
五种访问修饰符
1,private:是私有成员访问修饰符只能在当前类中访问
2,protected:是受保护的修饰符只能在当前类的内部或所有当前类的子类内部中进行访问
3,internal:只能在当前程序集内访问
4,protected internal:表示在当前类的内部或所有当前类的子类内部中或在当前程序集内访问
5,public:在任何地方都可以访问属于公共的
访问级别的约束:
1,访问修饰符不一致时子类的访问修饰符要比父类的低(类的访问修饰符只能用public和internal);(方法中参数的访问级别要与方法本身的一至)
2,类中属性或字段的访问级别不能比所对应类型的访问级别高
3,方法的访问级别不能币方法的参数和返回值的访问级别高
——————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————对象初始化器
Person(父类) p=new Person(){里面放父类中属性的值例如:"张三",20,'男'};
集合初始化器:
List<int> li=new List<int>(){1,2,3,4,5,6,7};