龙空技术网

5-7、构造方法-重载_笔记

编程语言学习笔记 280

前言:

今天姐妹们对“重载的多个方法要求名字和参数都要相同”大体比较讲究,大家都想要剖析一些“重载的多个方法要求名字和参数都要相同”的相关知识。那么小编也在网络上汇集了一些关于“重载的多个方法要求名字和参数都要相同””的相关知识,希望你们能喜欢,小伙伴们一起来了解一下吧!

当我们实例化一个类时,系统会自动对这个类的属性进行初始化:

①数字类型初始化成0/0.0

②string类型初始化成null

③char类型初始化成:\0

使用构造方法的好处:

①对多个属性进行赋值时,不需要重复的写实例名。

②可以保证用户在new一个对象的时候,必须对某一个属性进行赋值。

③在创建对象时,对只读属性进行初始化。

注意:初始化意思就是赋最初的值。例如把5赋值给变量a。

三、当我们定义好一个类之后,如果我们没有写的构造方法,那么系统会自动给我们加上一个默认的没有参数的构造方法,在这个构造方法中什么也不做,我们也看不到。

四、我们可以定义一个构造方法:

构造方法是一个特殊的方法,它的名字和类的名字相同并且没有返回值,连void都可以省略不写,我们一旦手写一个构造方法后,系统原先默认给我们添加的那个无参的构造方法就不会再为我们添加了。

例:

class Student

{

public Student() //无参构造方法

{}

public Student(string name) //有一个参数的构造方法

{

this.name=name; //this.name指的是本类中的name字段,name指的是传过来的参数

}

}

构造方法可以有参数,new对象的时候传递方法参数即可。new对象的时候,调用构造方法初始化字段。即new对象的过程就是调用类的构造方法的过程。抛一个异常的写法:

throw new Exception(“错误信息”);

例:

throw new Exception(“距离不能为负”);

等价于

Exception ex = new Exception(“距离不能为负”);

throw ex;

例:整个界面截图

第一部分:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication12

{

class Program

{

static void Main(string[] args)

{

Student zsStudent = new Student(); //new一个对象zsStudent

zsStudent.Name = "张三";

zsStudent.Sex='男';

zsStudent.Age = 18;

zsStudent.YuWen = 90;

zsStudent.ShuXue = 95;

zsStudent.YingYu = 80;

Student xlStudent = new Student();

xlStudent.Name = "小兰";

xlStudent.Sex = '女';

xlStudent.Age = 16;

xlStudent.YuWen = 95;

xlStudent.ShuXue = 85;

xlStudent.YingYu = 100;

Console.WriteLine("下面是张三打招呼的方式和显示成绩的方法”);

zsStudent.DaZhaoHu();

zsStudent.DaZhaoHu0();

Console.WriteLine("下面是小兰打招呼的方式和显示成绩的方法”);

xlStudent.DaZhaoHu();

xlStudent.DaZhaoHu0();

Ticket zsTicket = new Ticket(154); //new一个对象zsTicket,调用一个参数的Ticket类的构造方法进行初始化Ticket的属性。

zsTicket.ShowPrise();

Console.ReadKey();

}

}

}

第二部分:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication12

{

class Student

{

string name;

public string Name

{

get

{

return name+2;

}

set { name = value; }

}

char sex;

public char Sex

{

get { return sex; }

set

{

if (value == '男' || value == '女')

{

sex = value;

}

else

{

sex = '男';

}

}

}

int age;

public int Age

{

get { return age; }

set

{

age = value>=0?value:0;

}

}

int yuWen;

public int YuWen

{

get

{

return yuWen;

}

set { yuWen = value >= 0 ? value : 0; }

}

int shuXue;

public int ShuXue

{

get { return shuXue; }

set { shuXue = value >= 0 ? value : 0; }

}

int yingYu;

public int YingYu

{

get { return yingYu; }

set { yingYu = value >= 0 ? value : 0; }

}

public Student(string name, char sex, int age, int yuWen, int shuXue, int yingYu)

{

this.name = name;

this.sex = sex;

this.age = age;

this.yuWen = yuWen;

this.shuXue = shuXue;

this.yingYu = yingYu;

}

public Student(string name, char sex, int age)

{

this.name = name;

this.sex = sex;

if (age < 0 && age > 200)

{

age = 100;

}

this.age = age;

}

public Student(string name, char sex)

{

this.name = name;

this.sex = sex;

this.age = 18;

}

public Student()

{ }

public void DaZhaoHu()

{

Console.WriteLine("我叫{0},我是{1}生今年{2}岁了。", name, sex, age);

}

public void DaZhaoHu0()

{

int sum = yuWen + shuXue + yingYu;

int avg = sum / 3;

Console.WriteLine("我叫:{0},我的总成绩是:{1},我的平均成绩是:{2}。", name, sum, avg);

}

}

}

第三部分:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication12

{

class Ticket

{

public Ticket(int distance)

{

if (distance<0)

{

throw new Exception("距离不能为负数");

}

else

{

this.distance = distance;

}

}

public decimal Price

{

get

{

if (distance>=300)

{

return 1.0m * distance * 0.8m;

}

else if (distance>=200)

{

return 1.0m * distance * 0.9m;

}

else if (distance >= 100)

{

return 1.0m * distance * 0.95m;

}

else

{

return 1.0m * distance;

}

}

}

int distance;

public int Distance

{

get { return distance; }

}

public void ShowPrise()

{

Console.WriteLine("距离为{0}的票,票价为{1}",distance,Price);

}

}

}

注意:特别讲解,这一部分不包含在上面的例题里,只是单独存在对属性的全面解析:

string name; //私有的变量name,也是name字段

public string Name //公共的变量来保护私有变量name

{

get

{

name=”王二”;

return name+2;

}

set { name = value; }

}

①当外部想给name赋值的时候,由于name是私有的,访问不到,就通过访问共有的Name来给name赋值:zsStudent.Name=”张三”;这句话把张三赋值给Name,因为是赋值也就是设置Name,从而触发Name的set方法,此时张三赋给set方法里的value,然后再通过把value赋给name,从而达到把张三赋给私有变量name的目的。

②当外部想读取name的值的时候,通过Console.WriteLine(“我叫{0}。”,Name);访问私有的name,此时是读取Name,因此触发Name的get方法,最终结果是,name=”王二”,Name=”王二2”,所以。get方法里面只有出现了私有的name才会改变私有的name的值,如果不出现,return返回的值都赋给Name。

标签: #重载的多个方法要求名字和参数都要相同 #重载方法怎么写