黑马程序员技术交流社区

标题: 里氏转换求解 [打印本页]

作者: 吴承烨    时间: 2013-6-17 18:27
标题: 里氏转换求解

作者: 一直在努力    时间: 2013-6-17 21:21
没看过..等高手解答

作者: 高腾    时间: 2013-6-17 21:39
你这个就是声明了一个Person类、一个Son类、一个Son1类
Person[] person;不看后面的内容
这就是声明了一个Person类的数组
你不能说person是什么类型
它就是一个数组类型
就好比int[] nums = new int[] nums[n];
你不能说nums是int类型,它就是单独的一中类型,数组类型,只是里面存放的是int类型的数据
作者: 陈壹    时间: 2013-6-17 23:12
person[0]是person类型的。如果你这个能够成功运行,那么son跟son1应该是person的子类
自定义的类一般都是引用类型,当你声明一个变量并赋值时,相当于创建了一个对象和一个变量,并使该变量指向对象。而实际上该对象克同时被多个变量所指向
作者: Candy小烨    时间: 2013-6-19 06:30
Person[0] 里面的实例对象肯定是 Sun 它进数组后不会改变它本身的数据类型 按照里氏替换原则 那样做一般是为了实现多态
你可以这样试一下  Console.WriteLine(Person.GetType().ToString());  //GetType是获取本身的数据类型
如果你想把它在赋值类子类 可以这样写   Sun sunxxx = Person[0]  as Sun;  //as是尝试类型转换
作者: 王震    时间: 2013-6-20 22:53
person[0]肯定是一个Person类型 就和定义数组一样的 如:int []a=new int[9]; a[0]中的数肯定是一个int类型的啊。
sun 和sun1还是 Sun类型
person[0]和person[1]可以转换为Sun类型的 Sun s=(Sun)person[0];
在没有发生转换时用sun和sun1可以调用父类和子类的字段方法,person[0]只能调用父类的字段方法。
eg:
namespace 测试1
{
    class Program
    {
        static void Main(string[] args)
        {
            Sun sun = new Sun("吴沉桦","女","女人",100);
            Sun sun1 = new Sun("小明", "男", "男人", 180);
            Person[] person = {sun,sun1 };
            Console.WriteLine(person[0].name);
            Console.WriteLine(sun.sex);
            Console.ReadKey();
        }
    }
    public class Sun:Person
    {
        public string gender = "";
        public int height = 0;
        public Sun(string Name,string Sex,string Gender,int Height)
            :base(Name,Sex)
        {
            this.gender = Gender;
            this.height = Height;
        }
    }

    public class Person
    {
       public Person(string name,string sex)
       {
          this.name=name;
           this.sex=sex;
       }
      public string name = "";

       //public string Name
       //{
       //    get { return name; }
       //    set { name = value; }
       //}
      public string sex = "";

       //public string Sex
       //{
       //    get { return sex; }
       //    set { sex = value; }
       //}     
    }
}





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