C# 嵌套类
C# 嵌套类
在本教程中,您将通过示例了解 C# 中的嵌套类。
在 C# 中,我们可以在另一个类中定义一个类。它被称为嵌套类。例如,
class OuterClass {
...
class InnerClass {
...
}
}
在这里,我们创建了类 InnerClass 在类 OuterClass 内 . InnerClass 被称为嵌套类。
访问成员
要访问嵌套类的成员,我们首先需要创建它们的对象。
1.创建Outer类的对象
OuterClass obj1 = new OuterClass();
在这里,我们创建了 obj1 OuterClass 类的对象 .
2。创建内部类的对象
OuterClass.InnerClass obj2 = new OuterClass.InnerClass();
可以看到我们使用了OuterClass.InnerClass 创建 obj2 内部类的对象。这是因为 InnerClass 是 OuterClass 的嵌套类 .
一旦我们创建了各个类的对象,我们就可以使用对象名称和点运算符来访问每个类的成员。
示例:C# 嵌套类
using System;
namespace CsharpNestedClass {
// outer class
public class Car {
public void displayCar() {
Console.WriteLine("Car: Bugatti");
}
// inner class
public class Engine {
public void displayEngine() {
Console.WriteLine("Engine: Petrol Engine");
}
}
}
class Program {
static void Main(string[] args) {
// create object of outer class
Car sportsCar = new Car();
// access method of outer class
sportsCar.displayCar();
// create object of inner class
Car.Engine petrolEngine = new Car.Engine();
// access member of inner class
petrolEngine.displayEngine();
Console.ReadLine();
}
}
} 输出
Car: Bugatti Engine: Petrol Engine
在上面的程序中,我们嵌套了 Engine Car 里面的类 类。
Program里面 类,我们已经创建了外部类和内部类的对象。
// object of outer class
Car sportsCar = new Car();
// object of nested class
Car.Engine petrolEngine = new Car.Engine(); 然后我们使用这些对象来访问每个类的方法。
sportsCar.displayCar()- 使用Car的对象访问外部类方法petrolEngine.displayEngine()- 使用Engine的对象访问内部类方法
注意 :我们无法使用外部类的对象访问内部类的成员。例如,
// error code
sportsCar.displayEngine();
在这里,我们无法访问 displayEngine() 内部类Engine的方法 使用 sportsCar 外部类的对象。
在内部类中访问外部类成员
我们可以在内部类中访问外部类的成员。为此,我们使用外部类的对象。例如,
using System;
namespace CsharpNestedClass {
// outer class
public class Car {
public string brand = "Bugatti";
// nested class
public class Engine {
public void displayCar() {
// object of outer class
Car sportsCar = new Car();
Console.WriteLine("Brand: " + sportsCar.brand);
}
}
}
class Program {
static void Main(string[] args) {
// object of inner class
Car.Engine engineObj = new Car.Engine();
engineObj.displayCar();
Console.ReadLine();
}
}
} 输出
Brand: Bugatti
在上面的例子中,我们嵌套了 Engine Car 中的类 班级。注意这一行,
// inside Engine class
Car sportsCar = new Car();
Console.WriteLine("Brand: " + sportsCar.brand);
在这里,我们使用了类 Car 的对象 访问字段 brand .
在内部类中访问外部类的静态成员
如果我们需要访问外部类的静态成员,我们不需要创建它的对象。相反,我们可以直接使用外部类的名称。例如,
using System;
namespace CsharpNestedClass {
// outer class
public class Car {
//static member of outer class
public static string brand = "Bugatti";
// nested class
public class Engine {
public void display() {
// access static member of outer class
Console.WriteLine("Brand: " + Car.brand);
}
}
}
class Program {
static void Main(string[] args) {
// object of inner class
Car.Engine obj = new Car.Engine();
obj.display();
Console.ReadLine();
}
}
} 输出
Brand: Bugatti
在上面的例子中,我们嵌套了 Engine Car 里面的类 班级。 Car 有一个静态字段 brand .
在这里,我们访问了静态字段 brand 在内部类(Engine ) 使用外部类的名称 (Car )。
Console.WriteLine("Brand: " + Car.brand); 继承外部类
像普通类一样,我们也可以继承外部类。例如,
using System;
namespace CsharpNestedClass {
// outer class
class Computer {
public void display() {
Console.WriteLine("Method of Computer class");
}
// nested class
public class CPU {
}
}
class Laptop : Computer {
}
class Program {
static void Main(string[] args) {
// object of derived class
Laptop obj = new Laptop();
obj.display();
Console.ReadLine();
}
}
} 输出
Method of Computer class
在上面的例子中,我们派生了类 Laptop 从外部类 Computer .
因此,我们能够访问 display() Computer 类的方法 使用类 Laptop 的对象 .
继承内部类
在 C# 中,我们也可以继承内部类。例如,
using System;
namespace CsharpNestedClass {
// outer class
class Computer {
// nested class
public class CPU {
public void display() {
Console.WriteLine("Method of CPU class");
}
}
}
// inheriting inner class
class Laptop : Computer.CPU {
}
class Program {
static void Main(string[] args) {
// object of derived class
Laptop obj = new Laptop();
obj.display();
Console.ReadLine();
}
}
} 输出
Method of CPU class
在上面的例子中,我们导出了 Laptop 来自内部类 CPU 的类 .
请注意,我们使用了外部类的名称以及嵌套类来继承内部类。
class Laptop : Computer.CPU {} C语言