-
C#中对象之间的关系
在C#中,对象之间的关系主要有以下几种:
1. 继承(Inheritance):子类可以继承父类的属性和方法。这样,子类就可以重用父类的代码,减少重复代码。
2. 封装(Encapsulation):将对象的属性和方法包装在一个类中,隐藏对象的内部实现细节。这样可以保护对象的数据,防止外部直接访问和修改。
3. 多态(Polymorphism):允许一个接口使用多种实现。这样,我们可以使用相同的方法名来调用不同的实现,而不需要关心具体的实现类。
下面通过实例代码讲解这三种关系:
最后,如果你对python语言还有任何疑问或者需要进一步的帮助,请访问https://www.xin3721.com 本站原创,转载请注明出处:https://www.xin3721.com/ArticlecSharp/c47925.html
1. 继承(Inheritance):子类可以继承父类的属性和方法。这样,子类就可以重用父类的代码,减少重复代码。
2. 封装(Encapsulation):将对象的属性和方法包装在一个类中,隐藏对象的内部实现细节。这样可以保护对象的数据,防止外部直接访问和修改。
3. 多态(Polymorphism):允许一个接口使用多种实现。这样,我们可以使用相同的方法名来调用不同的实现,而不需要关心具体的实现类。
下面通过实例代码讲解这三种关系:
// 1. 继承
class Animal
{
public string Name { get; set; }
public void MakeSound()
{
Console.WriteLine("动物发出声音");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("汪汪汪");
}
}
class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("喵喵喵");
}
}
class Program
{
static void Main(string[] args)
{
Animal myAnimal = new Dog(); // 创建一个Dog对象,但将其赋值给Animal类型的变量
myAnimal.MakeSound(); // 输出:汪汪汪
Animal anotherAnimal = new Cat(); // 创建一个Cat对象,但将其赋值给Animal类型的变量
anotherAnimal.MakeSound(); // 输出:喵喵喵
}
}
// 2. 封装
class BankAccount
{
private double balance;
public double GetBalance()
{
return balance;
}
public void Deposit(double amount)
{
balance += amount;
}
public void Withdraw(double amount)
{
if (amount <= balance)
{
balance -= amount;
}
else
{
Console.WriteLine("余额不足");
}
}
}
class Program
{
static void Main(string[] args)
{
BankAccount account = new BankAccount();
account.Deposit(1000);
Console.WriteLine("存款后余额:" + account.GetBalance()); // 输出:存款后余额:1000
account.Withdraw(500);
Console.WriteLine("取款后余额:" + account.GetBalance()); // 输出:取款后余额:500
}
}
// 3. 多态
interface IFlyable
{
void Fly();
}
class Bird : IFlyable
{
public void Fly()
{
Console.WriteLine("鸟儿飞翔");
}
}
class Fish : IFlyable
{
public void Fly()
{
Console.WriteLine("鱼儿游泳");
}
}
class Program
{
static void Main(string[] args)
{
IFlyable bird = new Bird();
bird.Fly(); // 输出:鸟儿飞翔
IFlyable fish = new Fish();
fish.Fly(); // 输出:鱼儿游泳
}
}
class Animal
{
public string Name { get; set; }
public void MakeSound()
{
Console.WriteLine("动物发出声音");
}
}
class Dog : Animal
{
public override void MakeSound()
{
Console.WriteLine("汪汪汪");
}
}
class Cat : Animal
{
public override void MakeSound()
{
Console.WriteLine("喵喵喵");
}
}
class Program
{
static void Main(string[] args)
{
Animal myAnimal = new Dog(); // 创建一个Dog对象,但将其赋值给Animal类型的变量
myAnimal.MakeSound(); // 输出:汪汪汪
Animal anotherAnimal = new Cat(); // 创建一个Cat对象,但将其赋值给Animal类型的变量
anotherAnimal.MakeSound(); // 输出:喵喵喵
}
}
// 2. 封装
class BankAccount
{
private double balance;
public double GetBalance()
{
return balance;
}
public void Deposit(double amount)
{
balance += amount;
}
public void Withdraw(double amount)
{
if (amount <= balance)
{
balance -= amount;
}
else
{
Console.WriteLine("余额不足");
}
}
}
class Program
{
static void Main(string[] args)
{
BankAccount account = new BankAccount();
account.Deposit(1000);
Console.WriteLine("存款后余额:" + account.GetBalance()); // 输出:存款后余额:1000
account.Withdraw(500);
Console.WriteLine("取款后余额:" + account.GetBalance()); // 输出:取款后余额:500
}
}
// 3. 多态
interface IFlyable
{
void Fly();
}
class Bird : IFlyable
{
public void Fly()
{
Console.WriteLine("鸟儿飞翔");
}
}
class Fish : IFlyable
{
public void Fly()
{
Console.WriteLine("鱼儿游泳");
}
}
class Program
{
static void Main(string[] args)
{
IFlyable bird = new Bird();
bird.Fly(); // 输出:鸟儿飞翔
IFlyable fish = new Fish();
fish.Fly(); // 输出:鱼儿游泳
}
}
最后,如果你对python语言还有任何疑问或者需要进一步的帮助,请访问https://www.xin3721.com 本站原创,转载请注明出处:https://www.xin3721.com/ArticlecSharp/c47925.html
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式