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:没有具体的返回值 ...
随机推荐
- NAT64与DNS64基本原理概述
NAT64与DNS64基本原理概述 1.NAT64与DNS64背景 在IPv6网络的发展过程中,面临最大的问题应该是IPv6与IPv4的不兼容性,因此无法实现二种不兼容网络之间的互访.为了实现 ...
- 研华 FWA-3231 单路E3平台
研华 FWA-3231 单路E3平台 服务器主板上芯片组与处理器的适配参考
- [codeforces] 449C Jzzhu and Apples
原题 质因数分解后贪心即可(最后贪2) #include<cstdio> #include<vector> #include<stack> #include< ...
- transform perspective的层级问题
如上图,在积分的数字元素上,使用了transform perspective,其层级就穿透了上面的遮罩层,关键代码如下: .mask { position: fixed; z-index:; } .f ...
- 【CZY选讲·Hja的棋盘】
题目描述 Hja特别有钱,他买了一个×的棋盘,然后Yjq到这个棋盘来搞事.一开始所有格子都是白的,Yjq进行次行操作次列操作,所谓一次操作,是将对应的行列上的所有格子颜色取反.现在Yjq希望搞事之后 ...
- 刷题总结——Throw nails(hdu4393)
题目: Problem Description The annual school bicycle contest started. ZL is a student in this school. H ...
- SD卡给MCU升级
目 录1. 前言2. 初识BootLoader2.1 百度百科的BootLoader2.2 BootLoader的简单理解2.3 BootLoader的作用3. BootLoader预备知识3.1 复 ...
- Xcode_Build_Setting_Reference
http://download.csdn.net/detail/xinlingdedahai/8350631 https://developer.apple.com/library/ios/docum ...
- VIM使用技巧1
.命令是vim中很重要的一个命令,用法如下: 加入有一个文件vimtest.txt,内容如下: 1 Line one 2 Line two ...
- vmware上搭建kickstart 网络安装centos6.2的过程
前言 什么是PXE? PXE(Pre-boot Execution Environment,预启动执行环境)协议使计算机可以通过网络启动.协议分client和server. PXE client 在网 ...