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语言