搭建博客网站,常州网站公司网站,绵阳网站建站,wordpress怎么添加全局背景音乐C# 继承 
在 C# 中#xff0c;可以将字段和方法从一个类继承到另一个类。我们将“继承概念”分为两类#xff1a; 
派生类#xff08;子类#xff09; - 从另一个类继承的类基类#xff08;父类#xff09; - 被继承的类 
要从一个类继承#xff0c;使用 : 符号。 
在以…C# 继承 
在 C# 中可以将字段和方法从一个类继承到另一个类。我们将“继承概念”分为两类 
派生类子类 - 从另一个类继承的类基类父类 - 被继承的类 
要从一个类继承使用 : 符号。 
在以下示例中Car 类子类继承了 Vehicle 类父类的字段和方法 
示例 
class Vehicle  // 基类父类
{public string brand  Ford;  // 车辆字段public void honk()             // 车辆方法{Console.WriteLine(Tuut, tuut!);}
}class Car : Vehicle  // 派生类子类
{public string modelName  Mustang;  // 汽车字段
}class Program
{static void Main(string[] args){// 创建一个 myCar 对象Car myCar  new Car();// 在 myCar 对象上调用 honk() 方法来自 Vehicle 类myCar.honk();// 显示 brand 字段来自 Vehicle 类的值和 modelName 字段来自 Car 类的值Console.WriteLine(myCar.brand     myCar.modelName);}
}输出 
Tuut, tuut!
Ford Mustang为什么以及何时使用“继承” 
它对于代码重用非常有用在创建新类时重用现有类的字段和方法 
sealed 关键字 
如果您不希望其他类从一个类继承请使用 sealed 关键字 
sealed class Vehicle 
{...
}class Car : Vehicle 
{...
}如果您尝试访问一个 sealed 类C# 会生成一个错误 
Car: cannot derive from sealed type Vehicle多态性和方法覆盖 
多态性意味着 “多种形态”它发生在我们有许多通过继承相互关联的类时。继承允许我们从另一个类继承字段和方法。多态性使用这些方法来执行不同的任务。这允许我们以不同的方式执行单个动作。 
例如考虑一个名为 Animal 的基类它有一个名为 animalSound() 的方法。Animal 的派生类可以是 Pigs、Cats、Dogs、Birds它们也有自己的 animalSound() 方法实现猪会叫猫会喵喵叫等。 
示例 
class Animal  // 基类父类
{public virtual void animalSound() {Console.WriteLine(动物发出声音);}
}class Pig : Animal  // 派生类子类
{public override void animalSound() {Console.WriteLine(猪说wee wee);}
}class Dog : Animal  // 派生类子类
{public override void animalSound() {Console.WriteLine(狗说bow wow);}
}现在我们可以创建 Pig 和 Dog 对象并在它们两个上调用 animalSound() 方法 
示例 
class Program 
{static void Main(string[] args) {Animal myAnimal  new Animal();  // 创建一个 Animal 对象Animal myPig  new Pig();  // 创建一个 Pig 对象Animal myDog  new Dog();  // 创建一个 Dog 对象myAnimal.animalSound();myPig.animalSound();myDog.animalSound();}
}输出将为 
动物发出声音
猪说wee wee
狗说C# 抽象 
抽象类和方法 
数据抽象是隐藏某些细节并仅向用户显示基本信息的过程。 
抽象可以通过抽象类或接口来实现。 
abstract 关键字用于类和方法 
抽象类是一个受限制的类不能用于创建对象要访问它必须从另一个类继承。抽象方法只能在抽象类中使用并且没有方法体。方法体由派生类继承自提供。 
抽象类可以同时包含抽象方法和常规方法 
abstract class Animal {public abstract void animalSound();public void sleep() {Console.WriteLine(Zzz);}
}从上面的例子可以看出无法创建 Animal 类的对象 
Animal myObj  new Animal(); // 将生成错误无法创建抽象类或接口“Animal”的实例要访问抽象类必须从另一个类继承它 
例子 
// 抽象类
abstract class Animal {// 抽象方法没有方法体public abstract void animalSound();// 常规方法public void sleep() {Console.WriteLine(Zzz);}
}// 派生类继承自 Animal
class Pig : Animal {public override void animalSound() {// animalSound() 的方法体在这里提供Console.WriteLine(The pig says: wee wee);}
}class Program {static void Main(string[] args) {Pig myPig  new Pig(); // 创建一个 Pig 对象myPig.animalSound(); // 调用抽象方法myPig.sleep(); // 调用常规方法}
}为什么以及何时使用抽象类和方法 
为了实现安全性——隐藏某些细节只显示对象的重要细节。注意抽象也可以通过接口实现 
C# Interface 
接口是在 C# 中实现抽象的另一种方式。 
接口是一个完全“抽象类”它只能包含抽象方法和属性没有实际的方法体 
// 接口
interface Animal 
{void animalSound(); // 接口方法没有方法体void run(); // 接口方法没有方法体
}通常以字母 “I” 开头是一种良好的实践因为这样可以更容易地记住它是一个接口而不是一个类。 
默认情况下接口的成员是抽象和公共的。 
注意接口可以包含属性和方法但不能包含字段。 
要访问接口方法接口必须由另一个类“实现”有点像继承。要实现接口请使用冒号符号与继承一样。接口方法的实际方法体由“实现”类提供。请注意在实现接口时不必使用 override 关键字 
// 接口
interface IAnimal 
{void animalSound(); // 接口方法没有方法体
}// Pig “实现”了 IAnimal 接口
class Pig : IAnimal 
{public void animalSound() {// animalSound() 的方法体在这里提供Console.WriteLine(猪说呜呜);}
}class Program 
{static void Main(string[] args) {Pig myPig  new Pig();  // 创建一个 Pig 对象myPig.animalSound();}
} 接口的注意事项 
与抽象类一样接口不能用于创建对象在上面的示例中在 Program 类中不能创建“IAnimal”对象。接口方法没有方法体 - 方法体由“实现”类提供。在实现接口时必须覆盖其所有方法。接口可以包含属性和方法但不能包含字段/变量。接口成员默认是抽象和公共的。接口不能包含构造函数因为它不能用于创建对象。 
为什么以及何时使用接口 
为了实现安全性 - 隐藏对象的某些细节仅显示重要的细节接口。C# 不支持“多继承”一个类只能继承一个基类。但是可以通过接口实现多继承因为类可以实现多个接口。注意要实现多个接口请使用逗号分隔它们见下面的示例。 
为什么以及何时使用抽象类和方法 
为了实现安全性——隐藏某些细节只显示对象的重要细节。注意抽象也可以通过接口实现 
C# 接口 
接口是在 C# 中实现抽象的另一种方式。 
接口是一个完全“抽象类”它只能包含抽象方法和属性没有实际的方法体 
// 接口
interface Animal 
{void animalSound(); // 接口方法没有方法体void run(); // 接口方法没有方法体
}通常以字母 “I” 开头是一种良好的实践因为这样可以更容易地记住它是一个接口而不是一个类。 
默认情况下接口的成员是抽象和公共的。 
注意接口可以包含属性和方法但不能包含字段。 
要访问接口方法接口必须由另一个类“实现”有点像继承。要实现接口请使用冒号符号与继承一样。接口方法的实际方法体由“实现”类提供。请注意在实现接口时不必使用 override 关键字 
// 接口
interface IAnimal 
{void animalSound(); // 接口方法没有方法体
}// Pig “实现”了 IAnimal 接口
class Pig : IAnimal 
{public void animalSound() {// animalSound() 的方法体在这里提供Console.WriteLine(猪说呜呜);}
}class Program 
{static void Main(string[] args) {Pig myPig  new Pig();  // 创建一个 Pig 对象myPig.animalSound();}
} 接口的注意事项 
与抽象类一样接口不能用于创建对象在上面的示例中在 Program 类中不能创建IAnimal对象。接口方法没有方法体 - 方法体由“实现”类提供。在实现接口时必须覆盖其所有方法。接口可以包含属性和方法。 
C# 多接口 
要实现多个接口请使用逗号分隔它们 
interface IFirstInterface 
{void myMethod(); // 接口方法
}interface ISecondInterface 
{void myOtherMethod(); // 接口方法
}// 实现多个接口
class DemoClass : IFirstInterface, ISecondInterface 
{public void myMethod() {Console.WriteLine(一些文本..);}public void myOtherMethod() {Console.WriteLine(一些其他文本...);}
}class Program 
{static void Main(string[] args) {DemoClass myObj  new DemoClass();myObj.myMethod();myObj.myOtherMethod();}
}最后 
为了方便其他设备和平台的小伙伴观看往期文章 
微信公众号搜索Let us Coding关注后即可获取最新文章推送 
看完如果觉得有帮助欢迎 点赞、收藏、关注