分享10个国外优秀的平面设计网站,阿里云主机做网站,永久免费网站建设,在线小程序C# 什么是继承和派生
在 C# 中#xff0c;继承#xff08;Inheritance#xff09;是一种机制#xff0c;它允许一个类#xff08;子类#xff09;从另一个类#xff08;父类#xff09;中继承属性和方法。这种关系使得子类可以重用父类的代码#xff0c;同时可以在子…C# 什么是继承和派生
在 C# 中继承Inheritance是一种机制它允许一个类子类从另一个类父类中继承属性和方法。这种关系使得子类可以重用父类的代码同时可以在子类中添加或修改属性和方法。继承有助于减少代码重复和提高代码的可维护性。
派生Derivation是指使用继承机制创建的子类。子类从父类继承而来可以扩展或修改父类的功能。在 C# 中派生类通常是通过使用关键字 class 和 new 关键字来创建的。
在一个子类继承多个父类的情况下子类的实例化对象可以访问所有父类中被继承的内容。让我用一个比喻来解释一下。
假设你是一个魔法师而这些父类就像是不同的魔法书。每本魔法书都包含了独特的咒语和技能方法和属性。当你作为一个子类继承了多个父类时你就像是拥有了多本魔法书的超级魔法师
因此当你实例化一个子类的对象时你可以通过该对象访问并使用所有继承自父类的方法和属性。无论这些方法和属性是来自第一个父类、第二个父类还是其他父类都可以直接使用。这是因为子类会继承父类的方法和属性并具备相应的功能。
// 定义一个父类
public class Animal
{protected string name;public virtual void Speak(){Debug.Log(我是动物。);}
}// 定义一个子类继承自父类Animal
public class Cat : Animal
{public override void Speak(){Debug.Log(我是一只猫咪喵喵喵~);}public void Purr(){Debug.Log(猫咪正在发出呼噜声。);}
}// 在游戏对象上附加该脚本
public class TestScript : MonoBehaviour
{private void Start(){// 实例化Cat类的对象Cat myCat new Cat();// 调用继承自父类的方法myCat.Speak(); // 输出我是一只猫咪喵喵喵~// 调用子类自己新增的方法myCat.Purr(); // 输出猫咪正在发出呼噜声。// 可以将子类对象赋值给父类引用Animal animal myCat;// 通过父类引用调用继承自父类的方法animal.Speak(); // 输出我是一只猫咪喵喵喵~}
}总结一下当一个子类继承多个父类时子类的实例化对象可以访问并使用所有继承自父类的方法和属性。它们就像是一个超级魔法师可以利用所有魔法书中的咒语和技能。
在继承中有一些内容是无法被子类继承的。以下是一些不可以被继承的内容 构造函数Constructor子类会继承父类的方法和属性但构造函数不会被继承。每个类都需要自己定义并实现自己的构造函数。 私有成员Private Members私有成员包括私有方法、私有属性和私有字段等它们只能在声明它们的类内部访问无法被子类继承。 静态成员Static Members静态成员属于类本身而不属于类的实例。虽然子类可以访问父类的静态成员但无法继承静态成员。 密封类Sealed Class如果一个类被声明为密封类意味着它不能被其他类继承。因此无法从密封类派生出子类。 重写修饰符Override Modifier使用 sealed 修饰符标记的方法无法被子类再次重写。
总结起来构造函数、私有成员、静态成员、密封类以及被标记为 sealed 的重写方法都是不可被继承的。其他公共成员包括公共方法、属性和字段等都可以被子类继承并访问。