首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]C#面向对象编程实战挑战:轻松攻克30个经典练习题

发布于 2025-06-22 10:10:48
0
545

引言面向对象编程(OOP)是C语言的核心特性之一。为了帮助读者巩固面向对象编程的基础,本文将提供30个经典练习题,涵盖类与对象、继承、多态、封装等关键概念。通过这些练习题,读者可以更好地理解OOP的原...

引言

面向对象编程(OOP)是C#语言的核心特性之一。为了帮助读者巩固面向对象编程的基础,本文将提供30个经典练习题,涵盖类与对象、继承、多态、封装等关键概念。通过这些练习题,读者可以更好地理解OOP的原则,并提升实战能力。

练习题

1. 定义一个学生类

定义一个Student类,包含属性:姓名、年龄、成绩,并提供相应的构造函数和属性访问器。

public class Student
{ public string Name { get; set; } public int Age { get; set; } public double Score { get; set; } public Student(string name, int age, double score) { Name = name; Age = age; Score = score; }
}

2. 继承练习

定义一个Teacher类,继承自Student类,并添加属性:职称。

public class Teacher : Student
{ public string Title { get; set; } public Teacher(string name, int age, double score, string title) : base(name, age, score) { Title = title; }
}

3. 多态练习

定义一个Animal基类,包含方法MakeSound。然后定义DogCat两个派生类,分别重写MakeSound方法。

public abstract class Animal
{ public abstract void MakeSound();
}
public class Dog : Animal
{ public override void MakeSound() { Console.WriteLine("汪汪汪!"); }
}
public class Cat : Animal
{ public override void MakeSound() { Console.WriteLine("喵喵喵!"); }
}

4. 封装练习

定义一个BankAccount类,包含属性:账户余额、户名。提供方法:存款、取款。

public class BankAccount
{ private double balance; public string AccountHolder { get; set; } public BankAccount(string accountHolder) { AccountHolder = accountHolder; balance = 0; } public void Deposit(double amount) { balance += amount; } public bool Withdraw(double amount) { if (amount <= balance) { balance -= amount; return true; } return false; }
}

5. 抽象类练习

定义一个Vehicle抽象类,包含属性:速度、颜色,和方法:启动、停止。

public abstract class Vehicle
{ public double Speed { get; set; } public string Color { get; set; } public abstract void Start(); public abstract void Stop();
}

6. 接口练习

定义一个IVehicle接口,包含方法:加速、减速。

public interface IVehicle
{ void Accelerate(); void Decelerate();
}

7. 构造函数重载

定义一个Rectangle类,包含属性:长度、宽度。提供两个构造函数:无参和带两个参数的。

public class Rectangle
{ public double Length { get; set; } public double Width { get; set; } public Rectangle() { Length = 0; Width = 0; } public Rectangle(double length, double width) { Length = length; Width = width; }
}

8. 属性练习

定义一个Person类,包含属性:姓名、年龄。要求年龄属性只能在构造函数中设置。

public class Person
{ public string Name { get; set; } private int age; public int Age { get { return age; } } public Person(string name, int age) { Name = name; this.age = age; }
}

9. 析构函数练习

定义一个Resource类,包含资源释放方法。

public class Resource
{ public void Release() { Console.WriteLine("Releasing resource..."); } ~Resource() { Release(); }
}

10. 封装练习

定义一个Car类,包含属性:品牌、颜色。要求品牌属性只能在构造函数中设置,且为私有。

public class Car
{ private string brand; public string Color { get; set; } public Car(string brand, string color) { this.brand = brand; Color = color; } public void DisplayInfo() { Console.WriteLine($"Brand: {brand}, Color: {Color}"); }
}

11. 继承练习

定义一个Rectangle类和一个Square类,其中Square类继承自Rectangle类。

public class Rectangle
{ public double Length { get; set; } public double Width { get; set; }
}
public class Square : Rectangle
{ public Square(double side) { Length = side; Width = side; }
}

12. 多态练习

定义一个Shape基类和一个Circle派生类,其中Circle类重写Area方法。

public abstract class Shape
{ public abstract double Area();
}
public class Circle : Shape
{ public double Radius { get; set; } public override double Area() { return Math.PI * Radius * Radius; }
}

13. 封装练习

定义一个Account类,包含属性:账户号码、余额。提供方法:存款、取款。

public class Account
{ private string accountNumber; private double balance; public string AccountNumber { get { return accountNumber; } private set { accountNumber = value; } } public double Balance { get { return balance; } private set { balance = value; } } public Account(string accountNumber) { AccountNumber = accountNumber; Balance = 0; } public void Deposit(double amount) { if (amount > 0) { Balance += amount; } } public bool Withdraw(double amount) { if (amount > 0 && amount <= Balance) { Balance -= amount; return true; } return false; }
}

14. 构造函数练习

定义一个Person类,包含属性:姓名、年龄。提供两个构造函数:无参和带两个参数的。

public class Person
{ public string Name { get; set; } public int Age { get; set; } public Person() { Name = ""; Age = 0; } public Person(string name, int age) { Name = name; Age = age; }
}

15. 抽象类练习

定义一个Vehicle抽象类,包含属性:速度、颜色,和方法:启动、停止。

public abstract class Vehicle
{ public double Speed { get; set; } public string Color { get; set; } public abstract void Start(); public abstract void Stop();
}

16. 接口练习

定义一个IVehicle接口,包含方法:加速、减速。

public interface IVehicle
{ void Accelerate(); void Decelerate();
}

17. 构造函数重载

定义一个Rectangle类,包含属性:长度、宽度。提供两个构造函数:无参和带两个参数的。

public class Rectangle
{ public double Length { get; set; } public double Width { get; set; } public Rectangle() { Length = 0; Width = 0; } public Rectangle(double length, double width) { Length = length; Width = width; }
}

18. 属性练习

定义一个Person类,包含属性:姓名、年龄。要求年龄属性只能在构造函数中设置。

public class Person
{ public string Name { get; set; } private int age; public int Age { get { return age; } } public Person(string name, int age) { Name = name; this.age = age; }
}

19. 析构函数练习

定义一个Resource类,包含资源释放方法。

public class Resource
{ public void Release() { Console.WriteLine("Releasing resource..."); } ~Resource() { Release(); }
}

20. 封装练习

定义一个Car类,包含属性:品牌、颜色。要求品牌属性只能在构造函数中设置,且为私有。

public class Car
{ private string brand; public string Color { get; set; } public Car(string brand, string color) { this.brand = brand; Color = color; } public void DisplayInfo() { Console.WriteLine($"Brand: {brand}, Color: {Color}"); }
}

21. 继承练习

定义一个Rectangle类和一个Square类,其中Square类继承自Rectangle类。

public class Rectangle
{ public double Length { get; set; } public double Width { get; set; }
}
public class Square : Rectangle
{ public Square(double side) { Length = side; Width = side; }
}

22. 多态练习

定义一个Shape基类和一个Circle派生类,其中Circle类重写Area方法。

public abstract class Shape
{ public abstract double Area();
}
public class Circle : Shape
{ public double Radius { get; set; } public override double Area() { return Math.PI * Radius * Radius; }
}

23. 封装练习

定义一个Account类,包含属性:账户号码、余额。提供方法:存款、取款。

public class Account
{ private string accountNumber; private double balance; public string AccountNumber { get { return accountNumber; } private set { accountNumber = value; } } public double Balance { get { return balance; } private set { balance = value; } } public Account(string accountNumber) { AccountNumber = accountNumber; Balance = 0; } public void Deposit(double amount) { if (amount > 0) { Balance += amount; } } public bool Withdraw(double amount) { if (amount > 0 && amount <= Balance) { Balance -= amount; return true; } return false; }
}

24. 构造函数练习

定义一个Person类,包含属性:姓名、年龄。提供两个构造函数:无参和带两个参数的。

public class Person
{ public string Name { get; set; } public int Age { get; set; } public Person() { Name = ""; Age = 0; } public Person(string name, int age) { Name = name; Age = age; }
}

25. 抽象类练习

定义一个Vehicle抽象类,包含属性:速度、颜色,和方法:启动、停止。

public abstract class Vehicle
{ public double Speed { get; set; } public string Color { get; set; } public abstract void Start(); public abstract void Stop();
}

26. 接口练习

定义一个IVehicle接口,包含方法:加速、减速。

public interface IVehicle
{ void Accelerate(); void Decelerate();
}

27. 构造函数重载

定义一个Rectangle类,包含属性:长度、宽度。提供两个构造函数:无参和带两个参数的。

public class Rectangle
{ public double Length { get; set; } public double Width { get; set; } public Rectangle() { Length = 0; Width = 0; } public Rectangle(double length, double width) { Length = length; Width = width; }
}

28. 属性练习

定义一个Person类,包含属性:姓名、年龄。要求年龄属性只能在构造函数中设置。

public class Person
{ public string Name { get; set; } private int age; public int Age { get { return age; } } public Person(string name, int age) { Name = name; this.age = age; }
}

29. 析构函数练习

定义一个Resource类,包含资源释放方法。

public class Resource
{ public void Release() { Console.WriteLine("Releasing resource..."); } ~Resource() { Release(); }
}

30. 封装练习

定义一个Car类,包含属性:品牌、颜色。要求品牌属性只能在构造函数中设置,且为私有。

public class Car
{ private string brand; public string Color { get; set; } public Car(string brand, string color) { this.brand = brand; Color = color; } public void DisplayInfo() { Console.WriteLine($"Brand: {brand}, Color: {Color}"); }
}
评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流