c#自学之路第十二天

c#自学之路第十二天

一、笔记

1.继承(如:继承)

特性:
1.单跟性:一个字类只能有一个父类
2.传递性:
我们可能会在一些类中,写一些重复的成员,我们可以将这些重复的成员单独的封装到一个类中,作为这些类的父类。
字类继承父类的方法和属性,没有继承父类的私有字符段,也没有继承父类的构造函数,但是字类会默认调用父类无参的构造函数,用来创建父类对象,让子类可以使用父类中的成员。
所以,如果在父类中重新写了一个有参的构造函数之后,无参的构造函数会被干掉,字类就调用不到了,所以字类会报错。
解决办法:
1)在父类中重新写一个无参的构造函数
2)在字类中显示的调用父类的构造函数,使用关键字:base()(常用)

2.查看类图

对应的项目——>视图

3.object是所有类的基类

4.new关键字

1)创建对象
2)隐藏从父类那里继承过来的同名成员 隐藏的后果是调用不到父类的成员

二、代码

namespace 继承
{
    class Program
    {
        static void Main(string[] args)
        {
            Student s = new Student("学生", 18, '男', 101);
        }
    }
    public class Person
    {
        private string _name;
        public string Name
        {
            get { return _name; }
            set { _name = value; }
        }
        private int _age;
        public int Age
        {
            get { return _age; }
            set { _age = value; }
        }
        private char _gender;
        public char Gender
        {
            get { return _gender; }
            set { _gender = value; }
        }
        private void CHLSS()
        {
            Console.WriteLine("吃喝拉撒睡");
        }
        public Person(string name, int age, char gender)
        {
            this.Name = name;
            this.Age = age;
            this.Gender = gender;
        }
    }

    public class Student : Person
    {
        public Student(string name, int age, char gender, int id)
            : base(name, age, gender)
        {
            //this.Name = name;
            //this.Age = age;
            //this.Gender = gender;
            this.Id = id;
        }
        private int _id;
        public int Id
        {
            get { return _id; }
            set { _id = value; }
        }

        public void Study()
        {
            Console.WriteLine("我会学习");
        }

    }
    public class Teacher : Person
    {
        public Teacher(string name, int age, char gender, double salary)
            : base(name, age, gender)
        {
            this.Salary = salary;
        }

        private double _salary;
        public double Salary
        {
            get { return _salary; }
            set { _salary = value; }
        }

        public void Teach()
        {
            Console.WriteLine("我会教书");
        }
    }
    public class Driver : Person
    {
        public Driver(string name, int age, char gender, int dirvertime)
            : base(name, age, gender)
        {
            this.DirverTime = dirvertime;
        }
        private int _dirveTime;
        public int DirverTime
        {
            get { return _dirveTime; }
            set { _dirveTime = value; }
        }
        public void Drive()
        {
            Console.WriteLine("司机会开车");
        }
    }
}

namespace 继承练习
{
    class Program
    {
        static void Main(string[] args)
        {
            //记者:我是记者  我爱好偷拍 我的年龄是34 我是一个男狗仔
            //司机:我叫舒马赫 我的年龄是43 我是男人 我的驾龄是21年
            //程序员:我叫孙全 我的年龄是23 我是男生 我的工作年限是3年
            Reporter rep = new Reporter("狗仔", 34, '男', "偷拍");
            rep.ReporterSayHello();
            Programmer pro = new Programmer("程序员", 23, '男', 3);
            pro.ProgrammerSayHello();
            pro.SayHello();
            Console.ReadKey();

        }
        public class Person
        {
           private string _name;
            private int _age;
           private char _gender;
            public string Name
            {
                get { return _name; }
                set { _name = value; }
            }
           
            public int Age
            {
                get { return _age; }
                set { _age = value; }
            }
            public char Gender
            {
                get { return _gender; }
                set { _gender = value; }
            }
            public Person(string name,int age,char gender)
            {
                this.Age = age;
                this.Name = name;
                this.Gender = gender;
            }
            public void SayHello()
            {
                Console.WriteLine("大家好,我是一个人");
            }

        }

        public class Reporter:Person
        {
            private string _hobby;
            public string Hobby
            {
                get { return _hobby; }
                set { _hobby = value; }
            }
            public void ReporterSayHello()
            {
                Console.WriteLine("我叫{0},我是一名狗仔,我的爱好是{1},我是{2}生,我今年{3}岁了", this.Name, this.Hobby, this.Gender, this.Age);
            }
            public Reporter(string name,int age,char gender,string hobby)
                :base(name,age,gender)
            {
                this.Hobby = hobby;
            }
            public new void SayHello()
            {
                Console.WriteLine("大家好,我是一名记者");
            }
        }

        public class Programmer:Person
        {
            private int _workYear;
            public int WorkYear
            {
                get { return _workYear; }
                set { _workYear = value; }
            }
            public void ProgrammerSayHello()
            {
                Console.WriteLine("我叫{0},我是一名程序员,我是{1}生,我今年{2}岁了,我的工作年限是{3}年",this.Name,this.Gender,this.Age,this.WorkYear);
            }
            public Programmer(string name,int age,char gender,int workYear)
                :base(name,age,gender)
            {
                this.WorkYear = workYear;
            }
             public new void SayHello()
            {
                Console.WriteLine("大家好,我是一名程序员");
            }

        }
    }
}
namespace 方法练习1
{
    class Program
    {
        static void Main(string[] args)
        {
            //举例:写一个方法,判断输入年份为是否为闰年
            bool b=IsRun(2000);
            Console.WriteLine(b);
            Console.ReadKey();
        }
        /// <summary>
        /// 判断改定的年份是否是闰年
        /// </summary>
        /// <param name="year">年份</param>
        /// <returns>判断的结果</returns>
        public static bool IsRun(int year)
        {
            bool b = (year % 400 == 0) || (year % 4 == 0 && year % 100 != 0);
            return b;
        }
    }
}

namespace 方法练习2
{
    class Program
    {
       public static void Main(string[] args)
        {
            //比较两个数字的大小 返回最大的
            int n1 = 10;
            int n2 = 20;
            int max=GetMax(n1, n2);//实参
            Console.WriteLine(max);
            Console.ReadKey();
        }
        /// <summary>
        /// 计算两个数之间的计算值
        /// </summary>
        /// <param name="n1">第一个数</param>
        /// <param name="n2">第二个数</param>
        /// <returns>返回最大的数</returns>
        public static int GetMax(int n1,int n2)//形参
        {
            int max = n1 > n2 ? n1 : n2;
            return max;
        }
    }
}

namespace 方法练习3
{
    class Program
    {
        static void Main(string[] args)
        {
            //读取输入的整数
            //多次调用(如果用户输入的是数字,则返回,否则提示用户重新输入)
            while(true)
            {
                Console.WriteLine("请输入一个数字:");
                string input = Console.ReadLine();
                int number=NewMethod(input);
                Console.WriteLine(number);
                Console.ReadKey();
                
            }
        }
        /// <summary>
        /// 判断输入的是否是数字
        /// 如果是数字则返回
        /// 如果不是数字,提示用户重新输入
        /// </summary>
        /// <param name="input">输入的数字</param>
        public static int NewMethod(string input)
        {
            while(true)
            {
                try
                {
                    int number = Convert.ToInt32(input);
                    return number;
                }
                catch
                {
                    Console.WriteLine("请重新输入:");
                    input = Console.ReadLine();
                }
               
            }
        }
    }
}
namespace 方法练习5
{
    class Program
    {
        static void Main(string[] args)
        {
            //计算一个数组的整和
            int[] nums = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            Console.WriteLine("数组和为{0}", Sum(nums));
            Console.ReadKey();

        }
        /// <summary>
        /// 求数组和
        /// </summary>
        /// <param name="nums">数组</param>
        /// <returns>和</returns>
        public static int Sum(int[] nums)
        {
            int sum=0;
            for(int i=0;i<nums.Length;i++)
            {
                sum += nums[i];
            }
            return sum;
        }
    }
}

namespace 方法练习6
{
    class Program
    {
        static void Main(string[] args)
        {
            //有一个字符串,输出最长
            string[] name = { "马龙", "迈克尔乔丹", "雷古米勒", "蒂姆邓肯", "科比布雷恩特" };
           
            Console.WriteLine(GetLongest(name));
            Console.ReadKey();

        }
        public static string GetLongest(string[] s)
        {
            string max = s[0];
            for (int i = 0; i < s.Length; i++)
            {
                if (s[i].Length > max.Length)
                    max = s[i];
            }
            return max;
        }
   
    }
}

namespace 方法练习8
{
    class Program
    {
        static void Main(string[] args)
        {
            //写一个方法,用来判断用户输入的数字是不是质数
            //再写一个方法 要求用户只能输入数字 输入有误就一直让用户输入
            Console.WriteLine("请输入一个数字");
            string number = Console.ReadLine();
            int num = GetNumber(number);
            Console.WriteLine(num);
            bool b = IsZhi(num);
            Console.WriteLine(b);
            Console.ReadKey();
        }
        /// <summary>
        /// 输入一个数字
        /// </summary>
        /// <param name="s">输入的数字</param>
        /// <returns>返回的整数</returns>
        public static int GetNumber(string s)
        {
            int n;
            while(true)
            {
            try { 
            n = Convert.ToInt32(s);
                return n;
            }
            catch
            {
                Console.WriteLine("请重新输入");
                s = Console.ReadLine();
            }
            }
        }
        /// <summary>
        /// 判断是否是质数
        /// </summary>
        /// <param name="n">要判断数</param>
        /// <returns>判断结果</returns>
        public static bool IsZhi(int n)
        {
            if(n<2)
            {
                return false;
            }
            else
            {
            for(int i=2;i<n;i++)
            {
                if(n%i==0)
                {
                    return false;
                }
            }
            return true;
            }
        }
    }
}

namespace 方法练习9
{
    class Program
    {
        static void Main(string[] args)
        {
            //接受输入后判断其等级并显示出来
            int s;
            Console.WriteLine("请输入考试成绩");
            string m = Console.ReadLine();
            s = Convert.ToInt32(m);
            Console.WriteLine(GetLevel(s));
            Console.ReadKey();

        }
        public static string GetLevel(int score)
        {
            string level = "";
            switch (score / 10)
            {
                case 10:
                case 9: level = "优"; break;
                case 8: level = "良"; break;
                case 7: level = "中"; break;
                case 6: level = "差"; break;
                default: level = "不及格"; break;
            }
            return level;
        }
    }
}

发布了17 篇原创文章 · 获赞 0 · 访问量 117

猜你喜欢

转载自blog.csdn.net/weixin_41960515/article/details/104274451