C#类、对象、继承、多态看那些书籍
时间: 2023-10-08 18:09:58 浏览: 117
以下是推荐的C#类、对象、继承、多态方面的书籍:
1.《C# 从入门到精通》(作者:刘铁猛):该书是一本通俗易懂的C#入门书籍,适合初学者,包含了C#类、对象、继承、多态等内容。
2.《C#高级编程》(作者:Jeffrey Richter):该书是一本深入剖析C#高级编程技术的书籍,涵盖了C#类、对象、继承、多态等概念,适合有一定C#基础的读者。
3.《C# 5.0程序设计》(作者:唐学韬):该书是一本系统介绍C# 5.0编程的书籍,包含了C#类、对象、继承、多态等内容,适合C#初学者和进阶者。
4.《C# 6.0和.NET 4.6编程指南》(作者:Ian Griffiths):该书是一本全面介绍C# 6.0和.NET 4.6编程的书籍,包含了C#类、对象、继承、多态等内容,适合有一定C#基础的读者。
5.《C#高级编程指南》(作者:Christian Nagel):该书是一本深入讲解C#高级编程技术的书籍,包含了C#类、对象、继承、多态等概念,适合有一定C#基础的读者。
相关问题
实验室路灯控制类的继承多态C#
可以使用面向对象编程中的继承和多态来实现实验室路灯控制类的设计。
首先,可以定义一个基类 `Light`,包含路灯的基本属性和方法,例如 `on()` 和 `off()` 方法用于开关路灯,以及 `status` 属性用于表示路灯的状态。
然后,可以定义两个子类 `MotionLight` 和 `TimerLight`,分别用于根据人员活动和时间来控制路灯的开关。
`MotionLight` 类可以继承 `Light` 类,并添加一个 `motionSensing()` 方法用于检测人员活动,当有人靠近时自动开启路灯,当人离开时自动关闭路灯。
`TimerLight` 类也可以继承 `Light` 类,并添加一个 `setTimer()` 方法用于设置定时器,在指定的时间段内自动开启或关闭路灯。
最后,可以使用多态来实现根据不同的实际情况选择不同的路灯控制方式,例如在人员活动频繁的地方使用 `MotionLight`,在人员活动较少的地方使用 `TimerLight`,或者根据时间自动切换路灯控制方式等。
c#封装继承多态代码演示
封装、继承和多态是面向对象编程中的三个重要概念。下面是一个使用C#语言演示封装、继承和多态的代码示例:
封装示例:
```csharp
using System;
namespace EncapsulationApplication
{
class Employee
{
private string name;
private int age;
public string Name
{
get { return name; }
set { name = value; }
}
public int Age
{
get { return age; }
set { age = value; }
}
public void Display()
{
Console.WriteLine("Name: " + name);
Console.WriteLine("Age: " + age);
}
}
class Program
{
static void Main(string[] args)
{
Employee emp = new Employee();
emp.Name = "John";
emp.Age = 30;
emp.Display();
Console.ReadKey();
}
}
}
```
在这个示例中,Employee类封装了私有字段name和age,并通过公共属性Name和Age提供对它们的访问。Main方法中创建了一个Employee对象emp,并通过属性设置和Display方法展示了封装的效果。
继承示例:
```csharp
using System;
namespace InheritanceApplication
{
class Shape
{
protected int width;
protected int height;
public void setWidth(int w)
{
width = w;
}
public void setHeight(int h)
{
height = h;
}
}
class Rectangle : Shape
{
public int getArea()
{
return width * height;
}
}
class Program
{
static void Main(string[] args)
{
Rectangle rect = new Rectangle();
rect.setWidth(5);
rect.setHeight(7);
Console.WriteLine("Area: " + rect.getArea());
Console.ReadKey();
}
}
}
```
在这个示例中,Shape类作为基类,Rectangle类继承了Shape类。Rectangle类可以访问Shape类的protected字段和方法。Main方法中创建了一个Rectangle对象rect,并通过调用setWidth、setHeight和getArea方法展示了继承的效果。
多态示例:
```csharp
using System;
namespace PolymorphismApplication
{
class Shape
{
public virtual void Draw()
{
Console.WriteLine("Drawing a shape");
}
}
class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle");
}
}
class Rectangle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a rectangle");
}
}
class Program
{
static void Main(string[] args)
{
Shape[] shapes = new Shape[3];
shapes[0] = new Shape();
shapes[1] = new Circle();
shapes[2] = new Rectangle();
foreach (Shape shape in shapes)
{
shape.Draw();
}
Console.ReadKey();
}
}
}
```
在这个示例中,Shape类定义了一个虚拟的Draw方法,Circle类和Rectangle类分别重写了这个方法。Main方法中创建了一个Shape类型的数组,并分别用Shape、Circle和Rectangle的实例填充数组。通过遍历数组并调用Draw方法,展示了多态的效果。