using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 测试
{
class Students
{ //声明私有字段提高访问级别
private string stuNum;
private string stuName;
private int age;
private string sex;
//设置属性(通过)
public string StuNum
{
//底层的get方法
/*
public string get_StuNum()
{
return this.stuNum;
}
*/
get
{
return stuNum;
}
//底层的set方法
/*
public void set_StuNum(string value)
{
this.stuNum = value;
}
*/
set
{
this.stuNum = value;
}
}
public string StuName
{
get
{
return stuName;
}
set
{
//通过设置起到了对数据的保护
if (value.Length > 0 && value.Length < 5)
{
this.stuName = value;
}
else
{
Console.WriteLine("中国人的名字没有那么长!");
return;
}
}
}
public int Age
{
get
{
return age;
}
set
{
if (age > 0 || age < 150)
{
this.age = value;
}
else
{
Console.WriteLine("你输入的年龄不合法!");
}
}
}
public string Sex
{
get
{
return sex;
}
set
{
if (value == "男" || value == "女")
{
this.sex = value;
}
else
{
Console.WriteLine("你输入的性别有误!");
return;
}
}
}
//无参构造函数
public Students()
{ }
//含有三个参数的构造函数
public Students(string stuNum,string stuName,int age)
{
this.StuNum = stuNum;//this指当前对象
this.StuName = stuName;
this.Age = age;
}
//含有四个参数的构造函数
public Students(string stuNum,string stuName,int age,string sex)
//用含有四个参数的构造函数去调用含有三个参数的构造函数
:this(stuNum,stuName,age)
{
this.Sex = sex;
}
//由此可以说明构造函数可以重载
public void Tell()
{
Console.WriteLine("学号为" + stuNum + "的学生叫" + stuName + "今年" + age + "岁,是名" + sex + "同学");
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace 测试
{
class Program
{
static void Main(string[] args)
{
//快速实例化含有四个参数的对象stu1
Students stu1 = new Students("2010181001","tom",222,"男");
//new关键字起到了两个作用1. new Students给stu1对象分配了内存空间,将stu1存放在棧上,实际上代表的是Students在堆上的地址 2.【小括号()】调用构造函数Students
stu1.Tell();
//快速实例化含有三个参数的对象stu2,通过参数的个数与类型找到相应的构造函数
Students stu2 = new Students("2010181002", "lucy", 19);
stu2.Tell();
Console.ReadLine();
}
}
}
错误或者不当之处望各位大侠指正
构造函数:
1.构造函数是一种特殊的方法,能快速的给类内部字段初始化。不带任何参数的构造函数称为“默认构造函数”。无论何时只要使用了new运算符实例化对象,并且不为new提供任何参数,就会调用默认构造函数。每个类都有构造函数,及时没有声明,编译器也会自动为我们提供一个默认构造函数。在访问一个类的时候,系统最先执行构造函数中的语句。实际上,任何构造函数的执行都隐式的调用了系统提供的默认构造函数base()。
如声明如下的构造函数:
public Students(...){...} 等价于: public Students(...):base(){...}
2.特点:* 一个构造函数必须与类同名
* 没有返回值,所以不用写void
*一般情况下构造函数总是public类型。若声明为private类型,表明类不能被实例化,通常用户只含有静态成员的类
3.构造函数可以被继承