不带参数的构造函数称为“默认构造函数”。 无论何时,只要使用new
运算符实例化对象,并且不为 new
提供任何参数,就会调用默认构造函数。
案例一:调用构造函数,但是不传递参数
public class Car
{
public int speed;
public Car()
{
speed = 50;
}
}
class Program
{
static void Main()
{
Car car = new Car();
Console.WriteLine(car.speed);
}
}
案例二:通过构造函数,传递初始值。
public class Car
{
public int wheels;
public int speed;
public int weight;
public Car(int speed, int weight)
{
wheels = 4;
this.speed = speed; // 通过this来访问当前类的字段。而不是传递过来的值
this.weight = weight;
}
}
class Program
{
static void Main()
{
Car car = new Car(200,5);
Console.WriteLine(car.speed, car.weight);
}
}
public Person()
{
Console.WriteLine("1调用了Person的构造方法");
}
public Person(string name, int age)
{
this.name = name;
this.age = age;
Console.WriteLine("2调用了有name和age的构造方法");
Console.WriteLine("名字是:{0},年龄是:{1}", name, age);
}
public Person(string aaa, int bbb) // 这里会出现错误,会跟上面的方法分不清楚调用哪个、
{
//this.name = name;
//this.age = age;
//Console.WriteLine("2调用了有name和age的构造方法");
//Console.WriteLine("名字是:{0},年龄是:{1}", name, age);
}
public Person(int age, string name)
{
this.name = name;
this.age = age;
Console.WriteLine("3调用了有age和name的构造方法");
Console.WriteLine("名字是:{0},年龄是:{1}", name, age);
}
get
访问器和/或一个set
访问器。
当读取属性时,执行get
访问器的代码块;当向属性分配一个新值时,执行set
访问器的代码块。
不具有set
访问器的属性被视为只读属性。
不具有get
访问器的属性被视为只写属性。 同时具有这两个访问器的属性是读写属性。 public class Date
{
private int month;
public int Month
{
get
{
return month;
}
set
{
if ((value > 0) && (value < 13))
{
month = value; //value是外界赋的值
}
}
}
}
class People
{ // 年龄
private int _age;
public int Age
{
// set是赋值访问器
// Value 表示外界赋给_age的值
set
{
_age = value; // 默认就是这样的写法
}
// get是取值访问器
get
{
return _age; // 返回_age
}
public int hours
{
// 如果没有写Set方法(写了get方法),那么就表示只读。只能调用get方法
// 如果没有写get方法(写了set方法),那么表示只能赋值,不能查看
get
{
return 10;
}
}
// 简写方式: 表示将属性的set方法与get方法都写了
public int muise
{
get; set;
}
// 如果使用这种最简单的写法,就表示必须先给字段赋值(即调用set方法,给字段赋值操作),
// 然后才能取值(即调用get方法)
public int leichao;
}
用面向对象的思维去完成下面的题
游戏中,有玩家,每个玩家有昵称,ID,游戏职业(法师、战士、射手。。。),血量,物攻,法伤,物抗,法抗,。
游戏中,还有装备,装备有物理防御、法术防御、物理攻击力,法术攻击力,血量。 玩家拥有装备后,可以提升自己的能力。
游戏中,还有多个怪物,怪物有血量,物攻,法伤,物抗,法抗,Boss的法伤,物攻和物抗,法抗,血量比较高,小兵的比较低。
玩家打怪物,怪物打玩家。
血量减少的值等于被攻击的值减去自身的抗性。
如: 玩家1的物理攻击是800,法术攻击是300,怪物的物理防御是600,法术防御是500, 玩家打怪物一下,怪物的血量减少200.
玩家打怪物两下,怪物打玩家一下,可以多个玩家打一个怪物。
无论是玩家还是怪物,当血量为0的时候则 死亡。
要求游戏职业定义为枚举、还要用到构造函数。