在c#中:

  1. 注意:
  2. 子类并没有继承父类的构造函数,而是会默认调用父类那个无参数的构造函数。
  3. 如果一个子类继承了一个父类,那么这个子类除了可以使用自己的成员外,还可以使用从父类那里继承过来的成员。但是父类永远都只能使用自己的成员,而不能使用子类的成员。
  4. 子类之间也不能互相使用对方的成员。
  5. 里氏转换的概念:
  6. )、子类可以赋值给父类
  7. )、如果父类中装的是子类对象,那么可以讲这个父类强转为子类对象。
  8. namespace 里氏转换_接口练习
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. //测试1
  15. //IFavorateFood iff = new Cat();//子类可以赋值给父类
  16. //iff.Food();
  17. //IVoice iv = new Cat();
  18. //iv.Voice()
  19.  
  20. //测试2
  21. //IVoice Pvoice = new Cat();
  22. //Pvoice.Voice();//只能调用IVoice中的方法
  23. //Cat cat = Pvoice as Cat;//如果父类装的子类对象,则可以将父类强转为子类对象
  24. //cat.Food();
  25.  
  26. //测试3
  27. IVoice Pvoice = new Cat();
  28. IFavorateFood pFavorateFood = Pvoice as IFavorateFood;
  29. pFavorateFood.Food();
  30. Console.ReadLine();
  31. }
  32. }
  33. }
  34. public class Cat : IFavorateFood, IVoice
  35. {
  36. public void Food()
  37. {
  38. Console.WriteLine("我喜欢的事物是老鼠");
  39. }
  40.  
  41. public void Voice()
  42. {
  43. Console.WriteLine("喵喵喵");
  44. }
  45. }
  46. interface IFavorateFood
  47. {
  48. void Food();
  49. }
  50. interface IVoice
  51. {
  52. void Voice();
  53. }

Java中强制类型转换在多态中的应用:

  1. //动物类
  2. abstract class Animal{
  3.  
  4. String name;
  5.  
  6. public Animal(String name){
  7. this.name = name;
  8. }
  9.  
  10. public abstract void run();
  11. }
  12.  
  13. //老鼠
  14. class Mouse extends Animal{
  15.  
  16. public Mouse(String name){
  17. super(name);
  18. }
  19.  
  20. public void run(){
  21. System.out.println(name+"四条腿慢慢的走!");
  22. }
  23.  
  24. //老鼠特有方法---打洞
  25. public void dig(){
  26. System.out.println("老鼠在打洞..");
  27. }
  28. }
  29.  
  30. //鱼
  31. class Fish extends Animal{
  32.  
  33. public Fish(String name){
  34. super(name);
  35. }
  36.  
  37. public void run(){
  38. System.out.println(name+"摇摇尾巴游啊游 !");
  39. }
  40.  
  41. //吹泡泡
  42. public void bubble(){
  43. System.out.println(name+"吹泡泡...!");
  44. }
  45.  
  46. }
  47.  
  48. class Demo2
  49. {
  50. public static void main(String[] args)
  51. {
  52. /*
  53. Animal a = new Mouse("老鼠"); //多态
  54. //调用子类特有的方法
  55. Mouse m = (Mouse)a; //强制类型转换
  56. m.dig();
  57. */
  58.  
  59. Mouse m = new Mouse("米老鼠");
  60. Fish f = new Fish("草鱼");
  61.  
  62. print(f);
  63.  
  64. }
  65.  
  66. //需求: 定义一个函数可以接收任意类型的动物对象,在函数内部要调用到动物特有的方法。
  67. public static void print(Animal a){ // Animal a = new Mouse("米老鼠");
  68. if(a instanceof Fish){
  69. Fish f = (Fish)a;
  70. f.bubble();
  71. }else if(a instanceof Mouse){
  72. Mouse m = (Mouse)a;
  73. m.dig();
  74. }
  75. }
  76. }

c#中的里氏转换和Java中强制类型转换在多态中的应用的更多相关文章

  1. js字符串转换为数字的三种方法。(转换函数)(强制类型转换)(利用js变量弱类型转换)

    js字符串转换为数字的三种方法.(转换函数)(强制类型转换)(利用js变量弱类型转换) 一.总结 js字符串转换为数字的三种方法(parseInt("1234blue"))(Num ...

  2. c#中convert.toInt32和int.parse()和强制类型转换的区别

    string a="123"; int i=(int)a; 这是会出现错误因为:强制类型转换只能转换值类型不能转换引用类型 string属于引用类型    强制类型转换时如果值类型 ...

  3. java的强制类型转换

    java强制类型转换  详细连接https://www.cnblogs.com/kuangwong/p/6198862.html 在Java项目的实际开发和应用中,常常需要用到将对象转为String这 ...

  4. Java学习笔记--继承和多态(中)

    1.通过继承来开发超类(superclass) 2.使用super 关键词唤起超类的构造方法 3.在超类中覆盖方法 4.区分override和overload 5.在Object类中探索toStrin ...

  5. Java基础12 类型转换与多态

    链接地址:http://www.cnblogs.com/vamei/archive/2013/04/01/2992662.html 作者:Vamei 出处:http://www.cnblogs.com ...

  6. Java基础12 类型转换与多态(转载)

    类型检查 Java的任意变量和引用经过类型声明(type declaration),才能使用.我们之前见过对象数据.类数据.方法参数.方法返回值以及方法内部的自动变量,它们都需要声明其类型.Java是 ...

  7. java中的时区转换

    目录 java中的时区转换 一.时区的说明 二.时间的表示 三.时间戳 四.Date类和时间戳 五.java中的时区转换 java中的时区转换 一.时区的说明 地球表面按经线从东到西,被划成一个个区域 ...

  8. C#中的强制类型转换与as转换的区别

    C#中的强制类型转换 例如有ClassA与ClassB两个类创建两个类的对象进行转换 1 2 ClassA a = new ClassA();  ClassB b = new ClassB(); 如果 ...

  9. Python中进制转换函数的使用

    Python中进制转换函数的使用 关于Python中几个进制转换的函数使用方法,做一个简单的使用方法的介绍,我们常用的进制转换函数常用的就是int()(其他进制转换到十进制).bin()(十进制转换到 ...

随机推荐

  1. Mac安装python细节

    前言 之前在windows平台上安装python直接用Anaconda,优点是所有的科学计算的库都整合进去了,安装方便.在Mac系统下,当然也可以直接安装Anaconda,但是考虑到Mac会自带pyt ...

  2. spring boot 启动报:Composite-id class must implement Serializable: xxx错误

    问题 在对spring boot项目进行修改后,重新启动时报如下错误: Composite-id class must implement Serializable: xxx xxx为具体的类 原因 ...

  3. FString转到char* TCHAR*

    int ARPG_Database::BP_GetColumnIndex(int resultSet, FString columnName) { return GetColumnIndex(resu ...

  4. RabbiMQ原理与SpringBoot使用

    RabbiMQ介绍 具体代码可参考我的github:https://github.com/UniqueDong/springboot-study 一.使用场景 RabbitMQ是一个消息中间件,所以最 ...

  5. CC05:基本字符串压缩

    题目 利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能.比如,字符串"aabcccccaaa"经压缩会变成"a2b1c5a3".若压缩后的字符串没 ...

  6. MySQL索引原理与慢查询

    =========索引原理与慢查询======= 阅读目录 -     一.介绍 -     二.索引的原理 -     三.索引的数据结构 -     四.聚集索引与辅助索引 -     五.MyS ...

  7. Python入门_汇总_未完待续

    if/elseif/else for while break continue 多重循环 list [] duple() dict {} set {[]} 函数 help(abs) 查看abs函数的帮 ...

  8. .NET Core中Circuit Breaker

    谈谈Circuit Breaker在.NET Core中的简单应用 前言 由于微服务的盛行,不少公司都将原来细粒度比较大的服务拆分成多个小的服务,让每个小服务做好自己的事即可. 经过拆分之后,就避免不 ...

  9. OpenCV ——IplImage应用解析

    由于OpenCV主要针对的是计算机视觉方面的处理,因此在函数库中,最重要的结构体是IplImage结构.IplImage结构来源于Intel的另外一个函数库Intel Image Processing ...

  10. 不同ORM新的理解

    对于ORM你怎么理解?你用过的ORM有什么区别?这是面试的时候基本上会问的问题. 问题很简单,本文不在阐述.本文主要讨论Dapper 和 EF Core First的区别. 从直观上来看两个都是ORM ...