首页 > 代码库 > 面向对象(二) 继承和多态

面向对象(二) 继承和多态

一、继承

继承可以使得子类具有父类的属性和方法或者重新定义、追加属性和方法等。

继承可以使得子类别具有父类别的各种属性和方法,而不需要再次编写相同的代码。

//父类
public class Fulei
{
    //成员变量
    private int _Zhi;
    //属性
    public int  Zhi;
    {
         set{_Zhi = value ;}
         get{return _Zhi ;}
    //成员方法
    public int Fangfa()
    {   }
}
//子类
public class Fulei : Zilei
{
        
}

继承代码形式为 子类名:父类名。

子类继承父类属性时,只能继承父类允许继承的属性和成员方法。如方位修饰符为public的属性。

继承之后,可以直接在子类对象中设置引用父类的属性和成员方法。

子类也可以称为派生类,超类。

每个父类可以有多个子类。

子类也可以作为第三个类的父类,这样第三个类可以同时拥有子类和父类允许继承的属性和成员方法。

二、多态

多态可以从字面意思理解为“多种形态”,继承了一个父类的多个子类会拥有各自不同的成员变量/属性/成员方法,或者对同一个父类变量/属性/成员方法需要有不同的表现形式。

       虚方法

虚方法和重写是多个子类引用同一个父类成员方法但需要表现出不同形式时对成员方法进行修改,用关键词virtual和override实现。

//父类
public class Fulei
{
    //成员方法
    public virtual int Fangfa()
    { 
    return Zhi;
    }
}
//子类1
public class Fulei : Zilei
{
    public override int Fangfa()
    {
    return base.Fangfa();
    } 
}
//子类2
public class Fulei : Zilei
{
    public override int Fangfa()
    {
    return Zhi2;
    } 
}

virtual写在父类里方法的访问修饰符后面,将方法设置成虚方法,给子类一个权限,允许其改动方法。

override写在子类的方法里,该方法和从父类继承的方法有相同的方法名,方法内容默认是 return base.方法名();修改时把base.方法名()替换成需要的内容。

 

面向对象(二) 继承和多态