引言面向对象编程(OOP)是C语言的核心特性之一。为了帮助读者巩固面向对象编程的基础,本文将提供30个经典练习题,涵盖类与对象、继承、多态、封装等关键概念。通过这些练习题,读者可以更好地理解OOP的原...
面向对象编程(OOP)是C#语言的核心特性之一。为了帮助读者巩固面向对象编程的基础,本文将提供30个经典练习题,涵盖类与对象、继承、多态、封装等关键概念。通过这些练习题,读者可以更好地理解OOP的原则,并提升实战能力。
定义一个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; }
}定义一个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; }
}定义一个Animal基类,包含方法MakeSound。然后定义Dog和Cat两个派生类,分别重写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("喵喵喵!"); }
}定义一个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; }
}定义一个Vehicle抽象类,包含属性:速度、颜色,和方法:启动、停止。
public abstract class Vehicle
{ public double Speed { get; set; } public string Color { get; set; } public abstract void Start(); public abstract void Stop();
}定义一个IVehicle接口,包含方法:加速、减速。
public interface IVehicle
{ void Accelerate(); void Decelerate();
}定义一个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; }
}定义一个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; }
}定义一个Resource类,包含资源释放方法。
public class Resource
{ public void Release() { Console.WriteLine("Releasing resource..."); } ~Resource() { Release(); }
}定义一个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}"); }
}定义一个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; }
}定义一个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; }
}定义一个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; }
}定义一个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; }
}定义一个Vehicle抽象类,包含属性:速度、颜色,和方法:启动、停止。
public abstract class Vehicle
{ public double Speed { get; set; } public string Color { get; set; } public abstract void Start(); public abstract void Stop();
}定义一个IVehicle接口,包含方法:加速、减速。
public interface IVehicle
{ void Accelerate(); void Decelerate();
}定义一个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; }
}定义一个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; }
}定义一个Resource类,包含资源释放方法。
public class Resource
{ public void Release() { Console.WriteLine("Releasing resource..."); } ~Resource() { Release(); }
}定义一个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}"); }
}定义一个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; }
}定义一个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; }
}定义一个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; }
}定义一个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; }
}定义一个Vehicle抽象类,包含属性:速度、颜色,和方法:启动、停止。
public abstract class Vehicle
{ public double Speed { get; set; } public string Color { get; set; } public abstract void Start(); public abstract void Stop();
}定义一个IVehicle接口,包含方法:加速、减速。
public interface IVehicle
{ void Accelerate(); void Decelerate();
}定义一个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; }
}定义一个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; }
}定义一个Resource类,包含资源释放方法。
public class Resource
{ public void Release() { Console.WriteLine("Releasing resource..."); } ~Resource() { Release(); }
}定义一个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}"); }
}