黑马程序员技术交流社区

标题: 这算不算多态 [打印本页]

作者: 吴承烨    时间: 2013-6-18 22:57
标题: 这算不算多态
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;

  5. namespace 用面向对象做计算器
  6. {
  7.    class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.            //用面向对象做计算器
  12.            // 1.输入数字+符号
  13.             Console.WriteLine("请您输入数字1");
  14.             int numBer1 =Convert.ToInt32( Console.ReadLine());
  15.             Console.WriteLine("请您输入字符串");
  16.             string char1 = Console.ReadLine();
  17.             Console.WriteLine("请您输入数字2");
  18.             int numBer2 =Convert.ToInt32( Console.ReadLine());
  19.             int output = 0;
  20.             Sum sum = new Sum();
  21.             Reduce reduce=new Reduce ();
  22.             Divide divide=new Divide ();
  23.             Ride ride=new Ride ();
  24.             // 2.调用
  25.             switch (char1)
  26.             {
  27.                 case "+": output = sum.Sum1(numBer1, numBer2); Console.WriteLine("和为{0}",output); break;
  28.                 case "-": output = reduce.Sum1(numBer1, numBer2); ; Console.WriteLine("减为{0}", output); break;
  29.                 case "*": output = divide.Sum1(numBer1, numBer2); Console.WriteLine("乘为{0}", output); break;
  30.                 case "/": output = ride.Sum1(numBer1, numBer2); Console.WriteLine("除为{0}", output); break;
  31.             }
  32.             Console.ReadKey();
  33.         }
  34.     }
  35. }
  36. <font color="red">=====================================</font>
  37. using System;
  38. using System.Collections.Generic;
  39. using System.Linq;
  40. using System.Text;

  41. namespace 用面向对象做计算器
  42. {
  43.     //封装,继承,多态(虚方法+重写)
  44.     //+类
  45.     class Sum
  46.     {
  47.         public virtual int Sum1(int number1,int number2)
  48.         {
  49.            return( number1 + number2);
  50.         }
  51.     }
  52.     //-类
  53.     class Reduce:Sum
  54.     {
  55.         public override int Sum1 (int number1, int number2)
  56.         {
  57.            return( number1 - number2);
  58.         }
  59.     }
  60.     //除类
  61.     class Divide:Sum
  62.     {
  63.         public override int Sum1(int number1, int number2)
  64.         {
  65.             return (number1 * number2);
  66.         }
  67.         
  68.     }
  69.     // 乘类
  70.     class Ride:Sum
  71.     {
  72.         public override int Sum1(int number1, int number2)
  73.         {
  74.             return (number1 / number2);
  75.         }
  76.     }
  77. }
复制代码

作者: 彭康    时间: 2013-6-18 23:08
多态只是一种思想,不是一种技术。

你然你一定要这么问我就告诉你 这算多态吧
作者: 吴承烨    时间: 2013-6-18 23:14
怎么总感觉,就是调用了函数,没用多态,用了虚方法和重写可没起什么作用
作者: changweihua    时间: 2013-6-18 23:19
给运算符抽象出父类,定义虚方法,子类重写,然后通过里氏替换,实现计算
作者: Candy小烨    时间: 2013-6-19 06:38
你这个不叫多态 只是写了方法继承自一个类而已  多态是  子类继承自父类并重写父类中的方法
在用的时候 声明父类变量 根据不同的情况下 赋值不同的子类类型
因为多态 在调用父类方法时 会根据子类有没有重写父类方法而决定是否调用子类的方法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2