A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 不怕 中级黑马   /  2013-6-25 16:16  /  2518 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

10黑马币
从学生,老师,校长类中抽象出人的类,学生和老师都有收作业的方法,但是校长不会收作业。

最佳答案

查看完整内容

我的基础测试里有这道题,我是这样做的: /// /// 同一个类实例化的对象具有相同的字段,属性及方法,而校长不收作业这里理解为不调用该方法。 /// /// static void Main(string[] args) { //实例化一个老师的person类。 person teacher = new person(); teacher.Name = "张老师"; teacher.Age = -24; t ...

9 个回复

倒序浏览
我的基础测试里有这道题,我是这样做的:      
         /// <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();
        }

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
首先 创建人 这个抽象类 学生校长 老师分别继承人 这个类 但是 每个类不但继承人 而且还有自己的方法  你说的收作业 就是在老师学生里 加一个收作业的方法 而校长类 肯定要有自己特征的方法 不然那不就和 人 这个类重复了么
回复 使用道具 举报
你不懂得地方应该“抽象出人的类”这几个字,其它并没什么难理解的。其实用程序表现出来就是第一步:建立一个class,这个class名称叫做“人”;第二步:分别建立三个class,叫做学生,老师和校长,在建立时使用“:”去继承“人”class,这样就完成了抽象;第三步在学生和老师class中添加收作业方法。
回复 使用道具 举报
应该是说  人 这个类是抽象类  然后有三个子类是  学生类  老师类  校长类  再各自写自己的方法
回复 使用道具 举报
这么做可以吗??
  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.     }
复制代码
回复 使用道具 举报
作为子类应该也差不多吧~
回复 使用道具 举报
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:55
9#
aa26963 发表于 2013-6-26 08:46
abstract class Person
    {
        public abstract void homework();

可以运行的话这答案应该是恰当的
回复 使用道具 举报
zhand 中级黑马 2015-6-26 22:37:50
10#
完全看不明白啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马