C# 属性与字段

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        /* 主方法,函数的入口。
         * 从方法的命名来看,java 方法命名是首字母小写,后面每个开头字母大写(小驼峰规则)
         * 而C#也类似,只不过是首字母大写(大驼峰)。--就是喜欢和别人对着干
         */
       static void Main(string[] args)
        {
            Student s = new Student("invoker","1010",20,"man");
            Console.WriteLine(s);
            s.Name = "sfwoegwoegfjodger";
            s.sex = "woman"; //没有提供set访问器就会报错。
            Console.WriteLine(s);
            //仅为了防止控制台闪退
            Console.ReadLine();
        }
       
    }
    class People 
    {
        private string name;  //定义字段:在C#中字段用来存储属性的数据。而属性是对外发布数据。
        private int age;
        /*
         * 定义属性:
         * public string sex{get;}没有set,该属性是不能够被赋值的。
         * public string sex{set;}没有get,该属性是不能够取值的。
         * public string sex{}类似 private string sex;
         * 那么:
         * public string sex;          这是定义字段,就不一样了。没有任何约束(除了修饰词)。
         * public string sex{set;get}  这是定义属性。它的访问权限全靠set,get访问器。
         */

        //定义属性,虽然是公有成员,当没有set访问器,外界不能修改,该属性,只能访问.同理没get;不能访问。
        //如果定义私有属性,get;set;访问器就没有任何意义了。
        public string sex { get; set; } //有属性,没有相应的字段C#会自动生成相应的字段。

        /* 私有字段,通过相应的属性中的get,set访问器来访问。
         * 外部只需要取该公有属性。相当于为name取一个别名
         * Name,为外部访问。当然
         * get,set里面可以写相关的约束代码,限制通过Name
         * 来访问或者修改name。
         * 与java中set,get方法相比。C#简化了外部访问私有成员固定的
         * 模式getX(),setX()方法。而是通过替代公有属性来访问私有字段成员。
         * 另外,java属性和字段没什么区别。
         */
        public string Name 
        {
            get { return name; }
            set {
                if (value.Length < 12)
                    name = value;
                else Console.WriteLine("非法修改");
            }
        }
        //为age字段提供相应的属性,便于外界访问
        public int Age {
            get { return age; }
            set { age = value; }
        }

        public People(string name,int age,string sex) 
        {
            this.name = name;
            this.age = age;
            this.sex = sex;
        }
    }
    /*定义一个学生类继承Ojbect类,当然不继承Object会自动继承该类,这点和java类似
     * 继承使用":"
     */
    class Student:People
    {
        private string id;
        /* C#与java指代的父类不同,C#是base,而java是super.
         * 调用父类的构造器也不同,java是写在子类构造器里面,而C#是在
         * 子类构造器方法上面
         */
        public Student(string name,string id,int age,string sex):base(name,age,sex)
        {
            this.id = id;
        }
        /*重写Object里面的ToString方法
         */
        public override string ToString()
        {
            return "<" +Name + "," + id + "," +Age + ","+sex+">";
        }
    }
}

好久没写博客了,本来一直学习java,而老师硬要我们自学C#。没折就随便学学。不过C#与java极为类似。学习来也不会那么吃力。找到不同点就行了。个人之见,有什么不对的地方,还请谅解!。


你可能感兴趣的:(C#)