c#中的构造方法
当实例化一个类时,系统会自动对这个类的属性进行初始化
数字型初始化成0/0.0
string类型初始化成null
char类型初始化成\0
构造器就是构造方法,能够被重载(同类中不同参数列表的构造器),
不能够被重写(子类使用super方法可以调用)。
不能说能被继承,因为能够调用,但是不能重写。
使用构造方法的好处:
1.对多个属性进行赋值时,不需要重复的写实例名
2.可以保证用户在new一个对象时,必须对某一个属性进行赋值
3,在创建对象时,对制度属性进行初始化
当我们定义好一个类后,如果没有写构造方法,那么系统会自动给我们加上一个默认的没有参数的构造方法,在这个构造方法中,什么也不做,我们也看不到
我们可以定义一个构造方法:
构造方法是一个特殊的方法,他的名字和类的名字相同,并且没有返回值,连void都可以省略不写,我们一旦手写一个构造方法后,系统原先默认给我们添加的那个无参的构造方法就不会给我们添加了
要实例化一个类,必须调用他的构造方法
总结:
构造方法用来创建对象,并且可以在构造方法中对对象进行初始化
构造方法是用来创建对象的特殊方法,方法名和类名一样,没有返回值,连void都不用
构造方法可以有参数,new对象的时候传递参数即可
如果不指定构造方法,则类有一个默认的无参构造方法
如果指定了构造方法,则不再有默认的无参构造方法,如果需要无参构造方法,则需要自己来写
构造方法可以重载,也就是有多个参数不同的构造方法。
练习:
写一个Ticket类,有一个距离属性(本属性只读,在构造方法中赋值),不能为负数,有一个价格属性,价格属性为只读,并且根据距离计算价格(1元/公里):
0-100公里:票价不打折
101-200公里 :总额打9.5折
201-300公里:总额打9折
300公里以上:总额打8折
有一个方法,可以显示这张票的信息
代码如下:
using System;
using System.Collections.Generic;
using System.Text; namespace 构造方法
{
class Ticket
{
public Ticket(double length)
{
this.length = length;
}
double length;
double price;
public double Length
{
get
{
if (length < 0)
{
length = 0;
}
return length;
}
}
public double Price
{
get
{
if (length <= 100)
{
price = length;
}
else if (length > 100 && length <= 200)
{
price = 0.95 * length;
}
else if (length > 200 && length <= 300)
{
price = 0.9 * length;
}
else if (length > 300)
{
price = 0.8 * length;
}
return price;
}
} public void ShowInfo()
{
Console.WriteLine("距离:{0},票价:{1}",Length,Price);
}
}
}
c#中的构造方法的更多相关文章
- 通过反射获取class文件中的构造方法,运行构造方法
/* * 通过反射获取class文件中的构造方法,运行构造方法 * 运行构造方法,创建对象 * 1.获取class文件对象 * 2.从class文件对象中,获取需要的成员 * * Constructo ...
- java之继承中的构造方法
继承中的构造方法 1.子类的构造过程中必须调用其基类的构造方法. 2.子类可以在自己的构造方法中使用super(argument_list)调用基类的构造方法. 2.1.使用this(argumen ...
- Java中的构造方法总结
Java中的构造方法总结 时间: 2013-11-05 08:49 来源: 未知 作者: 站长部落 点击: 1752 次 今天写代码突然发现Java的构造方法也有不少说法呢,闲来无事,总结一下: ...
- Java学习笔记十六:Java中的构造方法
Java中的构造方法 1.使用new+构造方法 创建一个新的对象: 2.构造方法是定义在Java类中的一个用来初始化对象的方法: 3.构造方法与类同名且没有返回值: 4.语法格式: public 构造 ...
- java Class中得到构造方法Constructor、方法Method、字段Field
常用方法: Constructor类用于描述类中的构造方法: Constructor<T> getConstructor(Class<?>... parameterTypes) ...
- super用法和继承中的构造方法
当new出来一个对象的时候, this是只想对象本身. 在存在继承关系时, 在子类中用super表示引用父类中的东西. 子类的构造过程必须调用父类的构造方法. 子类中包含父类,所以子类中一定要先调用 ...
- ios 中的构造方法(二)
在之前有简单介绍了构造方法的结构,以及构造方法的作用,那么我们现在来讨论一下: 对象的创建分为两步:+ alloc 分配内存空间和 -init 进行初始化 那么在继承自 NSObject 的类当中,我 ...
- ios 中的构造方法
构造方法 1.什么是构造方法? 初始化对象的方法. 默认情况下,在 OC 当中创建1个对象分为两部分(new 做的事): +alloc:分配内存空间 -init :初始化对象 2.构造方法的作用是? ...
- JAVA基础--继承中的构造方法
1. 子类的构造方法必须调用父类的构造方法 2. 子类在自己的构造方法中使用super(argument_list)调用父类的构造方法, 使用this(argument_list)调用自己的其他的构造 ...
- Java中的构造方法
什么是构造方法:每一个类中至少有一个构造方法,它用于创建该类对象,这个和OC中的init有异曲同工之妙. 构造方法的格式:A:方法名与类名相同 B:没有返回值类型,没有void C:没有具体的返回值 ...
随机推荐
- git 上传项目到仓库
git 上传项目到仓库 第一步:建立仓库! 1.create new repository! 创建时最好选择 init (Initialize this repository with a READM ...
- 性能优化-FSL(Force Synchronous Layout)强制同步布局
通过chrome的Perfermance工具记录程序性能,切换到帧模式,点开其中一帧,看详情,中间为紫色的区块代表Layout,右上角带有红色三角的为警告,是chrome告知的强制同步布局,即FSL. ...
- Spring之WebSocket网页聊天以及服务器推送
Spring之WebSocket网页聊天以及服务器推送 转自:http://www.xdemo.org/spring-websocket-comet/ /Springframework /Spring ...
- 汕头市队赛 SRM10 T1 贪心只能过样例
贪心只能过样例 SRM 10 描述 给出n个数a[i](1<=a[i]<=n),问最多能把这些数分成几组,使得每个数a[i]所在的组至少有a[i]个数 输入格式 第一行一个整数n,接下来n ...
- Windows注册与删除mysql服务
1.删除服务: (1)采用windows自带的服务管理工具:参考:http://www.cnblogs.com/qlqwjy/p/8010598.html sc delete MySQL57 (2)m ...
- R语言绘制相对性关系图
准备 第一步就是安装R语言环境以及RStudio 图绘制准备 首先安装库文件,敲入指令,回车 install.packages('corrplot') 然后安装excel导入的插件,点击右上角impo ...
- LVDS 数据通道详解 单8 单6
1.1.1 LVDS接口分类 1.1.1.1 单路6bit LVDS 这种接口电路中,采用单路方式传输,每个基色信号采用6位数据,共18位RGB数据,因此 ...
- 网站开发只需数小时?Meteor 说这才是未来
原文: http://www.geekpark.net/topics/211573/ 那个想要挑战过去数十年沿用至今的网站开发模式的新势力来了. Meteor 是从 YC 孵化而出的现代网站开发平台, ...
- poj 1375(解析几何)
Intervals Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 4292 Accepted: 1288 Descrip ...
- 51nod 1021 石子归并 【区间DP】
1021 石子归并 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 收藏 关注 N堆石子摆成一条线.现要将石子有次序地合并成一堆.规定每次只能选相邻的2堆石子 ...