黑马程序员技术交流社区

标题: 有一道题不知道它这是神马意思! [打印本页]

作者: 不怕    时间: 2013-6-25 16:16
标题: 有一道题不知道它这是神马意思!
从学生,老师,校长类中抽象出人的类,学生和老师都有收作业的方法,但是校长不会收作业。
作者: 万大述    时间: 2013-6-25 16:16
我的基础测试里有这道题,我是这样做的:      
         /// <summary>
        /// 同一个类实例化的对象具有相同的字段,属性及方法,而校长不收作业这里理解为不调用该方法。
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            //实例化一个老师的person类。
            person teacher = new person();
            teacher.Name = "张老师";
            teacher.Age = -24;
            teacher.Sex='三';
            teacher.CollectWork();
            //实例化一个学生的pers类。
            person student = new person();
            student.Name = "李同学";
            student.Age = 200;
            student.Sex='女';
            student.CollectWork();
            //实例化一个校长的person类。
            person Headmaster = new person();
            Headmaster.Name = "王校长";
            Headmaster.Age=37;
            Headmaster.Sex='男';
            Console.ReadKey();

        }
public class person
    {
        public string wds = "";
        string name;
        char sex;
        int age;

        public int Age
        {
            get { return age; }
            set { age = (value>=0&&value<150)?value:0; }
        }

        public char Sex
        {
            get { return sex; }
            set { sex = (value=='男'||value=='女')?value:'男'; }
        }

        public string Name
        {
            get { return name; }
            set { name = value; }
        }
        public void CollectWork()
        {
            Console.WriteLine("{0}要来收作业啦!",name);
            Console.WriteLine();
        }
作者: 小然    时间: 2013-6-25 16:25
首先 创建人 这个抽象类 学生校长 老师分别继承人 这个类 但是 每个类不但继承人 而且还有自己的方法  你说的收作业 就是在老师学生里 加一个收作业的方法 而校长类 肯定要有自己特征的方法 不然那不就和 人 这个类重复了么

作者: 小丑Joker    时间: 2013-6-25 16:38
你不懂得地方应该“抽象出人的类”这几个字,其它并没什么难理解的。其实用程序表现出来就是第一步:建立一个class,这个class名称叫做“人”;第二步:分别建立三个class,叫做学生,老师和校长,在建立时使用“:”去继承“人”class,这样就完成了抽象;第三步在学生和老师class中添加收作业方法。
作者: 陈行    时间: 2013-6-25 16:49
应该是说  人 这个类是抽象类  然后有三个子类是  学生类  老师类  校长类  再各自写自己的方法
作者: 不怕    时间: 2013-6-25 16:53
这么做可以吗??
  1. abstract class people
  2.     {
  3.         public abstract void AbMethod1();
  4.         public abstract void AbMethod2();
  5.     }
  6.     class student : people
  7.     {
  8.         public override void AbMethod1()
  9.         {
  10.             Console.WriteLine("fsdfs");
  11.         }
  12.         public override void AbMethod2()
  13.         {
  14.             Console.WriteLine("二分无违法");
  15.         }
  16.     }
  17.     class teachers : people
  18.     {
  19.         public override void AbMethod1()
  20.         {
  21.             Console.WriteLine("fsdfs");
  22.         }
  23.         public override void AbMethod2()
  24.         {
  25.             Console.WriteLine("二分无违法");
  26.         }
  27.     }
  28.     class headmaster : people
  29.     {
  30.         public override void AbMethod1()
  31.         {
  32.             Console.WriteLine("fsdfs");
  33.         }
  34.         public override void AbMethod2()
  35.         {
  36.             Console.WriteLine("二分无违法");
  37.         }
  38.     }

  39.     class Program
  40.     {
  41.         static void Main(string[] args)
  42.         {
  43.             student st = new student();
  44.             st.AbMethod1();
  45.             Console.ReadKey();
  46.         }
  47.     }
复制代码

作者: 万大述    时间: 2013-6-25 17:17
作为子类应该也差不多吧~
作者: aa26963    时间: 2013-6-26 08:46
abstract class Person
    {
        public abstract void homework();
        
    }

    class Student:Person
    {
        public override void homework()
        {
            Console.WriteLine("我是学生,我会收作业");
        }
    }

    class Teacher : Person
    {
        public override void homework()
        {
            Console.WriteLine("我是老师,我会收作业");
        }
    }

    class Headmaster : Person
    {
        public override void homework()
        {
            Console.WriteLine("我是校长,我才不会收作业");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Student stu = new Student();
            stu.homework();

            Teacher tea = new Teacher();
            tea.homework();

            Headmaster master = new Headmaster();
            master.homework();

            Console.ReadKey();
        }
    }

这么写,可以不?
作者: 不怕    时间: 2013-6-26 10:08
aa26963 发表于 2013-6-26 08:46
abstract class Person
    {
        public abstract void homework();

可以运行的话这答案应该是恰当的
作者: zhand    时间: 2015-6-26 22:37
完全看不明白啊




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