C#面向对象编程三部曲:封装、继承与多态,你真的玩转了吗?
创作时间:
作者:
@小白创作中心
C#面向对象编程三部曲:封装、继承与多态,你真的玩转了吗?
引用
CSDN
1.
https://m.blog.csdn.net/z_344791576/article/details/142844476
嘿,编程小达人们!今天咱们要深入探讨C#面向对象编程的三大基石——封装、继承与多态。想象一下,它们就像是编程世界的魔法三件套,每一样都藏着无穷的魅力与力量。那么,你准备好揭开它们的神秘面纱,掌握这三大魔法的奥秘了吗?
第一幕:封装——守护秘密的小精灵
封装,就像是给你的代码穿上了一层神秘的外衣,让外界只能看到你想展示的部分,而隐藏起那些敏感和复杂的内部实现。这样做的好处多多,不仅保护了数据的安全,还简化了外部对对象的操作。
示例代码:
public class BankAccount
{
// 私有字段,外部无法直接访问
private double balance;
// 公共属性,提供对私有字段的访问
public double Balance
{
get { return balance; }
set
{
if (value < 0)
{
throw new ArgumentException("Balance cannot be negative.");
}
balance = value;
}
}
// 存款方法
public void Deposit(double amount)
{
if (amount <= 0)
{
throw new ArgumentException("Deposit amount must be positive.");
}
balance += amount;
}
// 取款方法(略去具体实现,仅作示例)
// ...
}
深度分析:
- 在
BankAccount类中,balance字段被声明为private,这意味着它只能在类内部被访问和修改,从而保护了账户余额的安全。 - 通过公共属性
Balance的get和set访问器,我们允许外部代码安全地获取和设置账户余额,同时可以在set访问器中添加验证逻辑,确保余额不会变为负数。
第二幕:继承——站在巨人的肩膀上
继承,就像是你站在了前人的肩膀上,可以直接使用他们已经创造好的东西,并在此基础上进行扩展和创新。在C#中,继承允许我们定义一个类(子类)来继承另一个类(父类)的属性和方法,从而实现代码的重用和扩展。
示例代码(假设有一个Animal父类和它的Dog子类):
public class Animal
{
public void Eat()
{
Console.WriteLine("This animal is eating.");
}
}
public class Dog : Animal
{
public void Bark()
{
Console.WriteLine("Woof!");
}
}
// 使用
Dog myDog = new Dog();
myDog.Eat(); // 继承自Animal的方法
myDog.Bark(); // Dog类特有的方法
深度分析:
Dog类通过冒号:操作符继承了Animal类,因此它自动获得了Animal类的所有公共和受保护成员(包括方法和属性)。- 在
Dog类中,我们添加了一个新的方法Bark,这是Dog类特有的行为。
第三幕:多态——千变万化的魔法
多态,是面向对象编程中最令人着迷的特性之一。它允许我们以统一的接口处理不同的对象,这些对象在运行时可以有不同的表现形式。多态主要通过抽象类、接口和虚方法来实现。
示例代码(使用抽象类和虚方法):
public abstract class Shape
{
public abstract void Draw();
}
public class Circle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a circle.");
}
}
public class Rectangle : Shape
{
public override void Draw()
{
Console.WriteLine("Drawing a rectangle.");
}
}
// 使用
Shape shape;
shape = new Circle();
shape.Draw(); // 输出:Drawing a circle.
shape = new Rectangle();
shape.Draw(); // 输出:Drawing a rectangle.
深度分析:
- 我们定义了一个抽象类
Shape和一个抽象方法Draw,这意味着Shape类不能直接实例化,且Draw方法没有具体实现。 Circle和Rectangle类继承了Shape类,并提供了Draw方法的具体实现。- 通过将
shape变量声明为Shape类型,但赋予它Circle或Rectangle的实例,我们展示了多态的魔力:尽管shape在编译时的类型是Shape,但在运行时它可以根据实际赋值的对象类型调用不同的Draw方法。
结语
好了,亲爱的编程小达人们,今天的面向对象编程三部曲就到这里啦!我们深入探讨了封装、继承与多态的奥秘,并通过示例代码展示了它们在实际编程中的应用。希望这次探险能让你对C#面向对象编程有更深入的理解和掌握。记住哦,编程就像是一场没有终点的旅行,只有不断学习和实践才能发现更多的乐趣和惊喜!加油哦!
热门推荐
深夜看「吃播」,为什么能让人上瘾?
2025年考研调剂全攻略:考研调剂资格、类型、流程全信息汇总
甘肃礼县:文旅产业发展势头强劲
脚踝疼痛的原因是什么?
陕西五大著名国家名胜风景区
反流性咽喉炎注意什么
有30w的越野车嘛,越野梦想触手可及!这8款SUV圆你梦想!
史上最全刷牙指南:从刷牙姿势到口腔护理,一文读懂正确刷牙法
中药材溯源技术现状及前景分析
终止固定期限劳动合同的区别是怎样的
汽车租赁及司机什么合同?商铺租赁合同手写有效吗?
《异度神剑X终极版》预购特典领取方法
哺乳期产妇喝什么粥好
人际交往中的互补性
《海贼王》最新特别篇,为什么是今年全球评分最高的动画?
专家解读:火腿肠到底好不好消化?
抽油烟机选购指南:三种类型对比与选购要点
系统工程师岗位的就业方向与职业规划
正确使用HPLC色谱柱的要点分享
《无尽的拉格朗日》微氪技巧攻略
玛瑙手镯是不是容易碎
实际控股人和法人谁责任大
甲醇市场分析:短期或试探60日均线压力
黑苦荞茶和黄苦荞茶有什么区别?哪个更好?
中国甘蔗产地排名一览
鱼缸硝酸盐过高怎么办?三种实用解决方案详解
一文读懂GDPR:欧盟通用数据保护条例详解
如何实现公司的成功收购与价值提升?收购公司的风险有哪些?
将录音证据刻制成光盘的方法和注意事项
石家庄牛肉板面"去安徽化",两地都在打造地方品牌