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:没有具体的返回值 ...
随机推荐
- Codeforces - 220B Little Elephant and Array(莫队模板题)
题意: m次查询.每次查询范围[L,R]中出现次数等于该数字的数字个数. 题解: 由于分块,在每次询问中,同一块时l至多移动根号n,从一块到另一块也是最多2倍根号n.对于r,每个块中因为同一块是按y排 ...
- POJ 3041 Asteroids | 匈牙利算法模板
emmmmm 让你敲个匈牙利 #include<cstdio> #include<algorithm> #include<cstring> #define N 51 ...
- angular.extend(dst,src)的简单示例
自我认为这个方法跟angular.copy(src,dst)有点相似.在angular.extend({},src)时,就可以画等号.这个src只代表一个对象.代码如下:(注意这个src可以有多个对象 ...
- bzoj1396&&2865 识别子串 后缀自动机+线段树
Input 一行,一个由小写字母组成的字符串S,长度不超过10^5 Output L行,每行一个整数,第i行的数据表示关于S的第i个元素的最短识别子串有多长. Sample Input agoodco ...
- Fiddler抓取HTTP请求
参考链接:http://blog.csdn.net/ohmygirl/article/details/17849983/ http://www.cnblogs.com/kingwolf_JavaScr ...
- MySQL5.7源码安装问题汇总
编译安装mysql5.7版本,想试用一下新的版本特性,发现跟之前的5.6版本编译有了一些变化,总结一下避免以后继续入坑.5.6安装方式 cmake版本 5.7编译cmake要求版本最低为2.8,当前为 ...
- JDK源码分析--Collections
1. 集合框架图 2. HashMap 成员构成 HashMap是通过"拉链法"实现的哈希表.它包括几个重要的成员变量:table, size, threshold, loadFa ...
- React中input框设置value报错解析
react input 不设置onChange的常见错误截图 表单是前端非常重要的一块内容,并且往往包含了错误校验等逻辑. React对表单元素做了专门的优化处理,他对表单元素做了一些抽象,使得他们 ...
- 数据库--MyBatis的(insert,update,delete)三种批量操作
转自:http://blog.csdn.net/starywx/article/details/23268465 前段时间由于项目赶期没顾上开发过程中的性能问题,现对部分代码进行优化的过程中发现在数据 ...
- Android 横向列表GridView 实现横向滚动
Android 横向列表实现,可左右滑动,如下图 1.主界面布局代码:activity_main.xml a.包裹HorizontalScrollView控件是GirdView横向滚动的基本条件b.G ...