本帖最后由 何红卫 于 2013-3-21 20:20 编辑
今天学到接口引用的时候,敲代码出来的结果发现接口引用没什么意义,这个所谓的多态意义何在- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace test8
- {
- //定义一个人类行为的接口,里面有一个打招呼的方法的签名
- public interface IPersonBehaviour
- {
- void SayHello();
- }
- //学生类,继承了IPersonBehaviour接口
- public class Student:IPersonBehaviour
- {
- public string name;
- public int age;
- public string hobby;
- //实现了接口的SayHello()方法
- public void SayHello()
- {
- Console.WriteLine("大家好,我叫{0},我今年{1}岁了,我的爱好是{2}", name, age, hobby);
- }
- }
- class Program
- {
- static void Main(string[] args)
- {
- Student stu = new Student();
- stu.name = "张三";
- stu.age = 18;
- stu.hobby = "打羽毛球";
- stu.SayHello(); //输出:大家好,我叫张三,我今年18岁了,我的爱好是打羽毛球
- IPersonBehaviour s = new Student();//使用接口引用的方式
- s.SayHello(); //输出:大家好,我叫,我今年0岁了,我的爱好是
- Console.ReadKey();
- }
- }
- }
复制代码 一个类一般也不可能只简单到只实现了继承接口的方法吧,定义了这个接口引用只能调用接口的方法,如果这个被类实现的方法内部使用了类本身的变量,这个调用也得不到我们想要的结果,(Student)s.name = "张三";做这种强制转换貌似也不行,按道理应该可以的。与其要使用接口引用去调用实现了接口的方法,还不如就用这个的类的对象去调用,难道为了多态而多态,求指导。 |