当前位置: 首页 > wzjs >正文

做国产免费视频网站个人如何做百度推广

做国产免费视频网站,个人如何做百度推广,微信小程序官方电话,wordpress 数据 清理c#接口_抽象类_多态学习 学习日志 关于:c#接口_抽象类_多态的学习记录。 一、概念 1. 多态(Polymorphism) 定义:同一操作作用于不同对象时,表现出不同的行为。实现方式: 继承 方法重写(ov…

c#接口_抽象类_多态学习

学习日志

关于:c#接口_抽象类_多态的学习记录。

一、概念

1. 多态(Polymorphism)

  • 定义:同一操作作用于不同对象时,表现出不同的行为。
  • 实现方式:
    • 继承 + 方法重写(override)。
    • 接口实现。
    • 父类引用指向子类对象。
internal abstract class Animal{}
internal class Dog : Animal{}
Animal myDog = new Dog(); // 多态:父类引用指向子类对象

2. 抽象类(Abstract Class)

  • 定义:不能被实例化的类,用于定义部分实现并强制子类完成特定行为。

Animal animal = new Animal(); ❌ 错误 CS0144: 无法创建抽象类的实例

  • 核心语法:
    • 抽象方法没有实现,子类必须重写。
    • 可以包含具体方法(用 virtual 允许子类重写)。
  • 适用场景:
    • 需要共享公共代码逻辑。
    • 强制子类实现某些方法。
internal abstract class Animal
{// 抽象方法:没有实现,子类必须重写public abstract void MakeSound(); // 具体方法:子类可直接继承或重写public virtual void Move(){Console.WriteLine("Animal is moving.");}
}// 子类 Dog 必须实现 MakeSound()
internal class Dog : Animal
{public override void MakeSound() //必须重写抽象方法{Console.WriteLine("Dog says: Woof!");}
}#### 抽象方法 internal abstract class Animal
{// 抽象方法:没有实现,子类必须重写public abstract void MakeSound(); protected virtual void DoSomeThing(){MakeSound();}protected void HearSomeThing(){MakeSound();}// 具体方法:子类可直接继承或重写public virtual void Move(){Console.WriteLine("Animal is moving.");}
}// 子类 Dog 必须实现 MakeSound()
internal class Dog : Animal
{protected override void DoSomeThing(){base.DoSomeThing();}public override void MakeSound() //必须重写抽象方法{Console.WriteLine("Dog says: Woof!");}
}
Dog mydog=new Dog();
mydog.DoSomeThing();
> Dog says: Woof!mydog.HearSomeThing();
> Dog says: Woof!

3. 接口(Interface)

  • 定义:纯行为契约,定义类必须实现的方法和属性(C# 8.0 前不包含实现)。
  • 核心语法:
    • 默认成员为 public
    • C# 8.0+ 支持默认实现和访问修饰符。
  • 适用场景:
    • 定义跨类别的能力(如 IFlyable 接口可被 BirdPlane 实现)。
    • 解决单继承限制(一个类可实现多个接口)。
public interface Animal {void makeSound(); 
}// ❌ 错误:接口不能直接实例化
Animal animal = new Animal(); // 编译错误!

二、抽象类_接口_多态对比

特性抽象类接口多态
核心目标代码复用 + 强制子类实现定义行为契约统一调用不同对象的行为
默认实现支持C# 8.0+ 支持默认实现不直接相关
继承/实现单继承(一个子类只能继承一个)多实现(一个类可实现多个接口)依赖继承或接口实现
方法修饰符abstract(必须重写)、virtual(可选重写)隐式 public(C# 8.0 前)override(重写父类/接口方法)
典型场景定义“是什么”(is-a)关系定义“能做什么”(can-do)关系动态调用不同子类/实现类的行为

三、代码示例

1. 抽象类与多态(三层继承)

// 抽象基类
internal abstract class Vehicle {public abstract void Start(); // 必须实现public virtual void Stop() => Console.WriteLine("Stopping..."); // 可选重写
}// 子类 Car
internal class Car : Vehicle {public override void Start() => Console.WriteLine("Key start"); // 必须实现public override void Stop() => Console.WriteLine("Brake stop"); // 重写
}// 孙子类 ElectricCar
internal class ElectricCar : Car {public override void Start() => Console.WriteLine("Button start"); // 重写// 不重写 Stop(),使用 Car 的版本
}

2. 接口与多态

// 接口定义
internal interface IPayment {void Pay(decimal amount);
}// 实现类
internal class Alipay : IPayment {public void Pay(decimal amount) => Console.WriteLine($"Alipay: {amount}");
}internal class WeChatPay : IPayment {public void Pay(decimal amount) => Console.WriteLine($"WeChat: {amount}");
}// 多态调用
List<IPayment> payments = new List<IPayment> { new Alipay(), new WeChatPay() };
foreach (var payment in payments) {payment.Pay(100); // 同一方法,不同实现
}

四、其他

1. 什么是否使用 抽象类 或者 接口

  • 用抽象类:

    • 需要共享公共代码或字段。
    • 强制子类实现某些方法,同时提供部分默认实现。
    • 典型场景:VehicleCarElectricCar
  • 用接口:

    • 定义无关类的共同能力(如 IFlyable),但是方法名称相同。
    • 需要多继承(如一个类实现 IRunnableISwimmable)。
    • 典型场景:支付系统(IPayment)。

2. 多态的最佳实践

  • 通过父类或接口引用操作对象:
    Animal animal = new Dog(); 
    animal.MakeSound(); // 调用 Dog 的实现
    
  • 利用集合统一管理不同对象:
    List<Vehicle> vehicles = new List<Vehicle> { new Car(), new ElectricCar() };
    foreach (var vehicle in vehicles) vehicle.Start(); // 不同子类不同行为
    

3. 多层继承中的方法重写规则

  • 子类必须实现父类的抽象方法(除非子类也是 abstract)。
  • 子类可以重写 virtual 方法,或选择不重写(沿用父类实现)。
  • 孙子类可重写父类已实现的方法(需父类方法标记为 virtual)。

4. 注意事项

  1. 接口的默认实现(C# 8.0+)应谨慎使用,避免破坏接口的契约性。
  2. 避免过度继承:三层以上继承可能导致代码复杂,优先考虑组合或接口。
  3. 命名规范:接口名称以 I 开头(如 IEnumerable),抽象类以 BaseAbstract 结尾(可选)。
http://www.dtcms.com/wzjs/102393.html

相关文章:

  • 做阿里巴巴类似的网站吗国内搜索引擎有哪些
  • wordpress菜单图标插件杭州龙席网络seo
  • 广西建设网登录入口上海seo优化公司kinglink
  • 建设银行住房公积金卡网站博客seo教程
  • 广州网站建设高端网晚上国网app
  • 短视频获客系统seo是什么东西
  • 奎屯建设局网站seo综合查询系统
  • 成品app软件大全seo测试
  • 男女做那事视频免费网站企业互联网推广
  • 网站上滚动海报怎么做seo优化是什么意思
  • 大学学术建设专题网站青岛网站建设制作推广
  • 宁波网站建设费用报价市场推广渠道有哪些
  • 经营网站的备案苏州手机关键词优化
  • 商城类网站用什么做网络项目怎么推广
  • 免费网站在线客服谷歌应用商店app下载
  • 全站仪为什么要建站什么网站可以发布广告
  • 网站竞价托管公司网站推广技巧
  • 自适应网站建设方案小红书关键词检测
  • 上海市卫生健康委员会网站seo优化服务
  • wordpress com搜索引擎优化排名案例
  • 2元域名注册网站搜索引擎优化是什么意思啊
  • 网站案例代码微信seo什么意思
  • 搭建网站需要程序郑州seo优化顾问阿亮
  • 重庆网站建设哪家便宜培训心得体会范文
  • 莆田有哪几家做网站设计的福州关键词排名软件
  • 赤峰网站策划慈溪seo
  • 一个门户网站多少钱营销型网站策划
  • 什么网站可以做宣传2021时事政治热点50条
  • 建设嘉陵摩托车官方网站seo学徒是做什么
  • 怎样才能使网站排名靠前新闻摘抄2022最新5篇