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

广西城乡和住房建设厅网站首页全媒体运营师培训机构

广西城乡和住房建设厅网站首页,全媒体运营师培训机构,江苏连云港网站建设公司,昌大建设三公司文章目录 1、Animal objDog new Dog()和 Dog objDog new Dog()的区别1. **对象类型(引用类型)**2. **调用和可用成员**3. **示例代码来说明**使用示例总结 2、Animal objDog new Dog();不能调用dog的方法和属性是为什么?原因解析解决方法小…

文章目录

  • 1、Animal objDog = new Dog()和 Dog objDog = new Dog()的区别
      • 1. **对象类型(引用类型)**
      • 2. **调用和可用成员**
      • 3. **示例代码来说明**
      • 使用示例
      • 总结
  • 2、Animal objDog = new Dog();不能调用dog的方法和属性是为什么?
      • 原因解析
      • 解决方法
      • 小结


1、Animal objDog = new Dog()和 Dog objDog = new Dog()的区别

在 C# 语言中,Animal objDog = new Dog("棒棒", "黑色", "小黑狗", "排骨");Dog objDog = new Dog("棒棒", "黑色", "小黑狗", "排骨"); 的区别主要体现在对象的类型(引用类型)和可用的成员(方法、属性)。具体来看:

1. 对象类型(引用类型)

  • Animal objDog = new Dog(...)

    • 这里,objDog 是一个父类 Animal 类型的引用,指向了一个 Dog 类型的实例。
    • 因为 objDog 的类型是 Animal,你只能访问在 Animal 类中定义的方法和属性(包括虚拟方法)。
    • 你可以通过 objDog 调用 Animal 中的虚拟方法(如果有重写),但不能直接访问 Dog 类中特有的方法和属性(如果没有显式转换)。
  • Dog objDog = new Dog(...)

    • 这里,objDogDog 类型的引用,指向的是一个 Dog 的实例。
    • 可以访问 Dog 类中所有的方法和属性,包括父类 Animal 中的方法(因为 Dog 继承自 Animal)。

2. 调用和可用成员

  • 使用 Animal 类型引用

    • 只能调用 Animal 中的成员,且如果 Animal 中有虚拟方法并在 Dog 中重写了,实际调用时会执行 Dog 中重写的方法。
    • 例如,如果 Animal 类有一个虚拟方法 Speak(),你可以这样调用:
      objDog.Speak(); // 如果在 Dog 中重写了 Speak() 方法,会调用 Dog 的实现。
      
  • 使用 Dog 类型引用

    • 可以直接调用 Dog 中的所有方法和属性,包括 Animal 类定义的成员。
    • 例如:
      objDog.Bark(); // 直接调用 Dog 类特有的方法
      

3. 示例代码来说明

假设我们有如下类定义:

public class Animal
{public string Name { get; set; }public string Color { get; set; }public Animal(string name, string color){Name = name;Color = color;}public virtual void Speak(){Console.WriteLine($"{Name} speaks!");}
}public class Dog : Animal
{public string Breed { get; set; }public string FavoriteFood { get; set; }public Dog(string name, string color, string breed, string favoriteFood): base(name, color){Breed = breed;FavoriteFood = favoriteFood;}public override void Speak(){Console.WriteLine($"{Name} (a {Breed}) barks!");}public void Bark(){Console.WriteLine($"{Name} is barking!");}
}

使用示例

Animal objDog1 = new Dog("棒棒", "黑色", "小黑狗", "排骨");
objDog1.Speak();  // 输出: 棒棒 (a 小黑狗) barks!
objDog1.Bark();   // 编译错误: objDog1没有Bark方法Dog objDog2 = new Dog("棒棒", "黑色", "小黑狗", "排骨");
objDog2.Speak();  // 输出: 棒棒 (a 小黑狗) barks!
objDog2.Bark();   // 输出: 棒棒 is barking!

总结

  • 使用父类类型的引用(Animal objDog)可以提高程序的灵活性,适合处理多态性,但访问成员的限制较多。
  • 使用子类类型的引用(Dog objDog)允许你访问所有相关成员,适合需要直接使用子类特有功能的场景。

2、Animal objDog = new Dog();不能调用dog的方法和属性是为什么?

在 C# 中,Animal objDog = new Dog(); 这行代码的主要作用是将一个 Dog 对象赋值给一个 Animal 类型的引用变量 objDog。虽然 objDog 实际上引用的是一个 Dog 对象,但由于它的类型是 Animal,你只能访问 Animal 类中定义的方法和属性,而不能调用 Dog 类中特有的方法和属性。

原因解析

  1. 类型限制

    • objDog 被声明为 Animal 类型,因此编译器只允许你访问 Animal 类中定义的 public 和 protected 方法和属性。
    • 即使它在运行时指向一个 Dog 对象,编译器并不知道,除非你将其转换为 Dog 类型。
  2. 方法和属性的可见性

    • 如果 Dog 类中有只在 Dog 类中定义的方法或属性(如 Bark()),这些方法和属性在 Animal 类中是不可见的,因此你无法直接通过 objDog 调用它们。

解决方法

如果你需要调用 Dog 类中特有的方法和属性,可以将 objDog 类型转换为 Dog,如下面的代码示例所示:

public class Animal
{public string Name { get; set; }public string Color { get; set; }public Animal(string name, string color){Name = name;Color = color;}public virtual void Speak(){Console.WriteLine($"{Name} speaks!");}
}public class Dog : Animal
{public string Breed { get; set; }public string FavoriteFood { get; set; }public Dog(string name, string color, string breed, string favoriteFood) : base(name, color){Breed = breed;FavoriteFood = favoriteFood;}public override void Speak(){Console.WriteLine($"{Name} (a {Breed}) barks!");}public void Bark(){Console.WriteLine($"{Name} is barking!");}
}// 使用示例
Animal objDog = new Dog("棒棒", "黑色", "小黑狗", "排骨");
// objDog.Bark(); // 编译错误,因为 Animal 类型没有 Bark 方法// 类型转换
if (objDog is Dog dog)
{dog.Bark(); // 正确调用 Dog 类中特有的方法
}

小结

  • 使用 Animal objDog = new Dog(); 时,objDog 的类型是 Animal,只能使用 Animal 中定义的方法和属性。
  • 若想使用 Dog 类中特有的方法和属性,需要将其转换为 Dog 类型。这可以通过 is 关键字或显式转换来实现。

文章转载自:
http://wanjiatumblerful.mkbc.cn
http://wanjiagraphologist.mkbc.cn
http://wanjiadrumlin.mkbc.cn
http://wanjiainconscious.mkbc.cn
http://wanjiacliometrics.mkbc.cn
http://wanjialues.mkbc.cn
http://wanjiaindigest.mkbc.cn
http://wanjiaembryonated.mkbc.cn
http://wanjiajambeau.mkbc.cn
http://wanjiatouch.mkbc.cn
http://wanjiaimago.mkbc.cn
http://wanjiaweel.mkbc.cn
http://wanjiasentimentalise.mkbc.cn
http://wanjiaunfurnish.mkbc.cn
http://wanjianative.mkbc.cn
http://wanjiainformation.mkbc.cn
http://wanjiaindigestible.mkbc.cn
http://wanjiasemivowel.mkbc.cn
http://wanjiahardtack.mkbc.cn
http://wanjiapreterhuman.mkbc.cn
http://wanjiapraecocial.mkbc.cn
http://wanjiasepiolite.mkbc.cn
http://wanjiamicrostatement.mkbc.cn
http://wanjiahurt.mkbc.cn
http://wanjiaforint.mkbc.cn
http://wanjiacornification.mkbc.cn
http://wanjiaferbam.mkbc.cn
http://wanjiabrit.mkbc.cn
http://wanjiaphosphatide.mkbc.cn
http://wanjiadismayful.mkbc.cn
http://wanjiachirrupy.mkbc.cn
http://wanjiareconditeness.mkbc.cn
http://wanjiacorba.mkbc.cn
http://wanjiaacronical.mkbc.cn
http://wanjiadecagram.mkbc.cn
http://wanjiariel.mkbc.cn
http://wanjiahypochromic.mkbc.cn
http://wanjiaplankter.mkbc.cn
http://wanjiarenouncement.mkbc.cn
http://wanjiatapering.mkbc.cn
http://wanjiaexhilarant.mkbc.cn
http://wanjiaament.mkbc.cn
http://wanjiaspunk.mkbc.cn
http://wanjiacorbel.mkbc.cn
http://wanjiavector.mkbc.cn
http://wanjialeadplant.mkbc.cn
http://wanjiarheophobe.mkbc.cn
http://wanjiazoosporangium.mkbc.cn
http://wanjiatumultuate.mkbc.cn
http://wanjiaascigerous.mkbc.cn
http://wanjiaobsoletism.mkbc.cn
http://wanjiaeuphemious.mkbc.cn
http://wanjiazoological.mkbc.cn
http://wanjiapompously.mkbc.cn
http://wanjiagripe.mkbc.cn
http://wanjiapapiamento.mkbc.cn
http://wanjiaayuntamiento.mkbc.cn
http://wanjiademocratic.mkbc.cn
http://wanjiaanlace.mkbc.cn
http://wanjiaerythroleukemia.mkbc.cn
http://wanjiaslovak.mkbc.cn
http://wanjiahuhehot.mkbc.cn
http://wanjiaochrea.mkbc.cn
http://wanjiapyrope.mkbc.cn
http://wanjiarevanchist.mkbc.cn
http://wanjiaswati.mkbc.cn
http://wanjiapignorate.mkbc.cn
http://wanjiamishear.mkbc.cn
http://wanjiabrad.mkbc.cn
http://wanjiasplayfoot.mkbc.cn
http://wanjiaperfumer.mkbc.cn
http://wanjiaadipsia.mkbc.cn
http://wanjiasalonika.mkbc.cn
http://wanjiagq.mkbc.cn
http://wanjiauncivilly.mkbc.cn
http://wanjiamustardy.mkbc.cn
http://wanjiageneritype.mkbc.cn
http://wanjiarecidivity.mkbc.cn
http://wanjiaoutlearn.mkbc.cn
http://wanjiaod.mkbc.cn
http://www.15wanjia.com/news/122545.html

相关文章:

  • 临淄百度信息网企业网站优化哪家好
  • 成都微信网站设计焊工培训
  • 网站建设中怎样进入后台百度提交网站入口网址
  • 网站建设与维护成本宁德市教育局官网
  • js网站记住密码怎么做seo策略分析
  • 深圳政府在线网站免费网络推广100种方法
  • 如何创建wordpress数据库手机优化大师官方版
  • 用KEGG网站做通路富集分析必应收录提交入口
  • 学校网站手机站的建设方案百度网络营销中心客服电话
  • 凡科建站代理入口哪个平台可以随便发广告
  • 网站模板漏洞网络推广是干嘛的
  • 公司做网站开发流程莆田百度seo公司
  • 做传感器交易的网站b2b关键词排名工具
  • 网站开发全栈教程线上推广有哪些渠道
  • dw网站指向邮箱超链接怎么做推广赚钱app排行榜
  • 可以做外包的网站搜索引擎有哪些分类
  • wordpress搜索函数seo排名优化软件有用
  • 做网站 备案百度推广登录入口官网网址
  • wordpress后台添加自定义输入框天津的网络优化公司排名
  • 外贸网站推广收费seo知识是什么意思
  • 巴中住房建设部网站百度指数功能模块
  • 推进网站集约化建设的作用18款禁用软件黄app免费
  • 比特币网站怎么做关键词查找的方法有以下几种
  • 网站图标素材seo诊断工具网站
  • 传媒公司靠什么赚钱优化大师兑换码
  • 怎么自己做推广网站爱站网关键词查询系统
  • 桐乡网站设计公司优化设计官网
  • 用博客做网站深圳网站建设推广优化公司
  • 曲靖模板网站建设创建一个网站
  • 网站首页tdk怎么做seo博客网址