-
C# 面向对象编程解析:优势、类和对象、类成员详解
C# - 什么是面向对象编程?
OOP代表面向对象编程。
过程式编程涉及编写执行数据操作的过程或方法,而面向对象编程涉及创建包含数据和方法的对象。
面向对象编程相对于过程式编程具有几个优势:
- OOP执行速度更快,更容易执行
- OOP为程序提供了清晰的结构
- OOP有助于保持C#代码DRY("不要重复自己"),并使代码更易于维护、修改和调试
- OOP使得能够创建完全可重用的应用程序,编写更少的代码并减少开发时间
提示:"不要重复自己"(DRY)原则是有关减少代码重复的原则。应该提取出应用程序中常见的代码,并将其放置在单一位置并重复使用,而不是重复编写。
C# - 什么是类和对象?
类和对象是面向对象编程的两个主要方面。
看一下以下插图,看看类和对象之间的区别:
类
|
Fruit(水果) |
对象
|
Apple(苹果) |
|
|
|
Banana(香蕉) |
|
|
|
Mango(芒果) |
另一个例子:
类
|
Car(汽车) |
对象
|
Volvo(沃尔沃) |
|
|
|
Audi(奥迪) |
|
|
|
Toyota(丰田) |
因此,类是对象的模板,而对象是类的实例。
当创建单个对象时,它们继承自类的所有变量和方法。
C# 类和对象
在C#中,一切都与类和对象以及它们的属性和方法相关。例如,在现实生活中,汽车是一个对象。汽车具有属性,例如重量和颜色,以及方法,例如驾驶和刹车。
创建一个类
要创建一个类,请使用 class
关键字:
创建一个名为 "Car" 的类,并带有一个颜色变量:
|
class Car |
|
{ |
|
string color = "red"; |
|
} |
当变量直接在类中声明时,通常被称为字段(或属性)。
虽然不是必需的,但是当命名类时以大写字母开头是一个良好的做法。此外,C#文件的名称通常与类的名称匹配,这样使得我们的代码更有组织性。但这不是必需的(就像在Java中一样)。
创建一个对象
对象是从类创建的。我们已经创建了一个名为 Car
的类,现在我们可以使用它来创建对象。
要创建 Car
的对象,请指定类名,后跟对象名,并使用关键字 new
:
|
class Car |
|
{ |
|
string color = "red"; |
|
|
|
static void Main(string[] args) |
|
{ |
|
Car myObj = new Car(); |
|
Console.WriteLine(myObj.color); |
|
} |
|
} |
请注意,我们使用点语法(.)来访问类内的变量/字段(myObj.color
)
C# 多个类和对象
多个对象
您可以创建一个类的多个对象:
|
class Car |
|
{ |
|
string color = "red"; |
|
static void Main(string[] args) |
|
{ |
|
Car myObj1 = new Car(); |
|
Car myObj2 = new Car(); |
|
Console.WriteLine(myObj1.color); |
|
Console.WriteLine(myObj2.color); |
|
} |
|
} |
使用多个类
您还可以在另一个类中创建一个类的对象并访问它。这通常用于更好地组织类(一个类具有所有字段和方法,而另一个类包含 Main() 方法(要执行的代码))。
Car.cs
|
class Car |
|
{ |
|
public string color = "red"; |
|
} |
Program.cs
|
class Program |
|
{ |
|
static void Main(string[] args) |
|
{ |
|
Car myObj = new Car(); |
|
Console.WriteLine(myObj.color); |
|
} |
|
} |
您注意到了 public
关键字吗?它被称为访问修饰符,它指定 Car
的 color
变量/字段对其他类(例如 Program
)也是可访问的
C# 类成员
在C#中,类内的字段和方法通常被称为"类成员":
|
// The class |
|
class MyClass |
|
{ |
|
// Class members |
|
string color = "red"; // field |
|
int maxSpeed = 200; // field |
|
public void fullThrottle() // method |
|
{ |
|
Console.WriteLine("The car is going as fast as it can!"); |
|
} |
|
} |
字段
下面的示例将创建 Car
类的对象,名称为 myObj
。然后我们打印字段 color
和 maxSpeed
的值:
|
class Car |
|
{ |
|
string color = "red"; |
|
int maxSpeed = 200; |
|
|
|
static void Main(string[] args) |
|
{ |
|
Car myObj = new Car(); |
|
Console.WriteLine(myObj.color); |
|
Console.WriteLine(myObj.maxSpeed); |
|
} |
|
} |
您还可以将字段留空,并在创建对象时修改它们:
|
class Car |
|
{ |
|
string color; |
|
int maxSpeed; |
|
|
|
static void Main(string[] args) |
|
{ |
|
Car myObj = new Car(); |
|
myObj.color = "red"; |
|
myObj.maxSpeed = 200; |
|
Console.WriteLine(myObj.color); |
|
Console.WriteLine(myObj.maxSpeed); |
|
} |
|
} |
当创建一个类的多个对象时,这是特别有用的:
|
class Car |
|
{ |
|
string model; |
|
string color; |
|
int year; |
|
|
|
static void Main(string[] args) |
|
{ |
|
Car Ford = new Car(); |
|
Ford.model = "Mustang"; |
|
Ford.color = "red"; |
|
Ford.year = 1969; |
|
|
|
Car Opel = new Car(); |
|
Opel.model = "Astra"; |
|
Opel.color = "white"; |
|
Opel.year = 2005; |
|
|
|
Console.WriteLine(Ford.model); |
|
Console.WriteLine(Opel.model); |
|
} |
|
} |
对象方法
方法通常属于一个类,它们定义了类的对象的行为。
与字段一样,您可以使用点语法访问方法。但是请注意,方法必须是 public
。并且请记住,我们使用方法的名称,后跟两个括号 ()
和分号 ;
来调用(执行)方法:
|
class Car |
|
{ |
|
string color; // field |
|
int maxSpeed; // field |
|
public void fullThrottle() // method |
|
{ |
|
Console.WriteLine("The car is going as fast as it can!"); |
|
} |
|
|
|
static void Main(string[] args) |
|
{ |
|
Car myObj = new Car(); |
|
myObj.fullThrottle(); // 调用方法 |
|
} |
|
} |
为什么我们将方法声明为 public
?
原因很简单:静态方法可以在不创建类对象的情况下访问,而公共方法只能由对象访问。
使用多个类
Car.cs
|
class Car |
|
{ |
|
public string model; |
|
public string color; |
|
public int year; |
|
public void fullThrottle() |
|
{ |
|
Console.WriteLine("The car is going as fast as it can!"); |
|
} |
|
} |
Program.cs
|
class Program |
|
{ |
|
static void Main(string[] args) |
|
{ |
|
Car Ford = new Car(); |
|
Ford.model = "Mustang"; |
|
Ford.color = "red"; |
|
Ford.year = 1969; |
|
|
|
Car Opel = new Car(); |
|
Opel.model = "Astra"; |
|
Opel.color = "white"; |
|
Opel.year = 2005; |
|
|
|
Console.WriteLine(Ford.model); |
|
Console.WriteLine(Opel.model); |
|
} |
|
} |
public
关键字称为访问修饰符,它指定 Car
的字段也可以由其他类(例如 Program
)访问
出处:https://www.cnblogs.com/xiaowange/p/17988488