①浅谈private、protected、public三者
保护权限:private>protected>public
private:要用构造方法,创建set、get函数的方法来访问。创建以后就没有问题了。
protected:子类可以访问的到,但是其他的访问不到,可以访问到,但是不能实例化,换言之(可以访问父类的成员,但是不能访问父类对象的成员)
public:都可以访问的到
②浅谈base和this
假如子类中有和父类中的重名的成员, base.成员 访问的是父类中的成员
而 this.成员 访问的是当前类中的成员。
③重写方法的两种形式(虚方法和隐藏方法)
当子类中与父类中的方法重名但子类中的方法要执行其他功能的时候,需要执行重写的方法。
虚方法:把一个基类函数声明为virtual,就可以在任何派生类中重写该函数
class MyBaseClass
{
public virtual string MyMethod()
{
return "Method is called in base class";
}
}
在派生类中使用override就可以实现重写
class MyDrivedClass:MyBaseClass
{
public override string MyMethod()
{
return "Method is called in drivedclass";
}
}
隐藏方法:如果签名相同的方法在基类和派生类中都进行了声明,但是该方法没有分别声明为virtual和override,派生类就会隐藏基类方法。(要使用new关键字进行声明)
基类
class MyBaseClass
{
public int MyMethod()
{
}
}
派生类(在派生类中把基类同名的方法隐藏掉了)
class MyDrivedClass:MyBaseClass
{
public new void MyMethod()
{
}
}
需要注意的一点:在实例化对象的过程中,A a = new B();这个时候实例化对象a的属性调用的是类B的属性。
需要注意的二点:虚方法和隐藏方法的区别
以上方的代码为例,在主函数中实例化MyBaseClass(父) mb = new MyDrivedClass();(子)
如果为虚方法,则在调用同名方法时将会调用子类的方法;
如果为隐藏方法,则在调用同名方法时将会调用父类的方法。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。