范文一:JAVA 方法的重载与重写
Java语言中的概念就是多,这回又有两个概念,重载和重写。这是两个新概念,也是两个令初学者容易混淆的概念。他们的概念截然不同,只不过都有个“重”字,就以为是很像的。
下面解释一下这两个概念:
方法重载(overloading method) 是在一个类里面,方法名字相同,而参数不同。返回类型呢?可以相同也可以不同。
方法重写(overiding method) 子类不想原封不动地继承父类的方法,而是想作一定的修改,这就需要采用方法的重写。方法重写又称方法覆盖。如果还是搞混的话,就把“重写覆盖”,这个词多念几遍吧。知道是覆盖的话,就知道是子类覆盖父类的方法了。
实践: 重载的例子
public class MethodOverloading {
void recieve(int i) {
System.out.println("接收一个int数据");
System.out.println("i="+i);
}
void recieve(float f) {
System.out.println("接受一个float型的数据");
System.out.println("f="+f);
}
void recieve(String s) {
System.out.println("接受一个String型数据");
System.out.println("s="+s);
}
public static void main(String[] args){
MethodOverloading m = new MethodOverloading();
m.recieve(3456);
m.recieve(34.56);
m.recieve(“......“);
}
}
大家看到了上面的例子方法receive()有三个,名字相同参数不同。这样的话,在main()调用的时候,参数用起来就很方便了。重写的例子似乎不用举了,记不住的话,就和“覆盖”。
有时候,重载和重写的方式有些复杂,在jdk5里面。有一些方式能简化一些。我们来看看吧,jdk5的可变参数。 如果把相同参数类型的方法重载好几遍真的是很烦。就一个方法,pri(String args), pri(String arg0 ,String arg1), pri(String arg0,String arg1,String arg2), pri(String arg0,String arg1,String arg2,String arg3)。这样的话会写很多烦琐的代码。现在jdk5可以,用“…”来代替这些参数。
实践:
public class overload {
//若干个相同类型的参数,用“...”代替
public void pri(String... strings ){
for (String str?: strings) //for这个循环语句也有迭代的意思
System.out.print(str);
}
public static void main(String[] args){
new overload().pri("100jq"," );
}
}
jdk5的方法重写,比以前多了一个叫做协变返回的概念。在以往jdk的版本中,还有一个比较让人讨厌的地方。方法重写确实是比较不错的机制,如果想用父类的方法,写个super就可以了,如果不想用父类的方法就重写覆盖。但是重写覆盖的返回类型不能覆盖,父类的类型不够用怎么办,我们想在子类重写它的类型可以吗?现在可以了。
看下面的例子:
class Point2D { //定义二维的点
protected int x, y;
public Point2D() {
this.x=0;
this.y=0;}
public Point2D(int x, int y) {
this.x = x;
this.y = y;
}}
//定义三维的点,继承二维
class Point3D extends Point2D {
protected int z;
public Point3D(int x, int y) {
this(x, y, 0);
}
public Point3D(int x, int y, int z) {
this.x = x;
this.y = y;
this.z = z;
}}
//定义二维的位置
class Position2D {
Point2D location;
public Position2D() {
this.location = new Point2D();
}
public Position2D(int x, int y) {
this.location = new Point2D(x, y);
}
public Point2D getLocation() {
return location;
}}
//定义三维的位置,继承二维的位置
class Position3D extends Position2D {
Point3D location; //在这里已经变成Point3D的类型了
public Position3D(int x, int y, int z) {
this.location = new Point3D(x, y, z);
}
@Override //注释是重写方法
public Point3D getLocation() {
return location; //返回是子类的类型而不是原来的类型了
}
}
范文二:水泥混凝土路面重载与重载交通的界定方法
公路 2009年2月 第2期 HIGHWAY Feb.2009N o.2文章编号:0451—0712(2009)02一0056一05中图分类号:u416.216文献标识码:A
水泥混凝土路面重载与重载交通的界定方法
戴学臻,蒋应军
(长安大学特殊地区公路工程教育部重点实验室 西安市 710064)
摘要:近年来,人们受到经济利益的驱使,大型运输车辆的轴载大幅提高,对公路路面造成极大的损害。为 此,必需对运输车辆的轴载与重载交通进行界定,提出各级公路路面的重载与重载交通界限,以便制定相应的重载路 面设计方法或采取相应的行政管理措施。通过路面结构应力分析及重载道路交通组成的统计分析方法,提出各级公 路水泥混凝土路面的重载与重载交通界限。
关键词:道路工程;水泥混凝土路面;重载;重载交通;荷载应力
随着国民经济的发展、交通量的猛增,特别是运 输车辆轴载的大幅度增加,对路面结构造成很大的 破坏,影响了正常的运输活动,也造成极大的经济损 失与社会影响。为此,对重载作用下的路面进行力 学分析,提出各级公路路面的重载界限势在必行。 对此,国内外不少专家进行了相关的研究[1 ̄5]。这 些研究工作大部分集中在沥青混凝土路面的重载界 定及相应措施上面[6 ̄9],却很少涉及水泥混凝土路 面的重载界定。
水泥混凝土路面对重载特别敏感,重载容易导 致路面发生早期损坏,且难以修复。为此,必需对各 级公路水泥混凝土路面重载进行界定,以便采取相 应的措施。
本文通过对水泥混凝土路面荷载应力分析,在
基金项目:河南省交通厅科技项目,项目编号2003—21K61
收稿日期:2008—06一03
Laboratory Test and Mechanism Analysis of Road
Performance of Semi—Flexible Pavement
HUoⅥ一zhenl,LIANGⅥ2,H【,ANG Bno-t口o 3,HUANG F口n94
(1.Hetao University,Linhe 015000,China;2.Highway Management Bureau of Weihai City;Weihai 264200,China,3.Transportation College.Southeast University of C hina,Nanjing 210096,China;4.Fujian Province Architecture Design Institute,Fuzhou 350001,China)
Abstract:Semi—flexible pavement is generally described as a composition pavement that possess the characteristics of asphalt concrete and Portland cement concrete,which is filled with Portland cement grout in open—graded basic—asphalt—mixture. It is avoid—closed framework structure. In this paper,the SEM and IR are used to investigate the performance of semi—fIexible pavement.The calculative results demonstrate that semi—flexible pavement has well rutting resistance at high temperature and well water resistance,and it also has better crack resistance at 10w temperature, especially, it has excellent road performance when the design voids in mother asphalt mixture is 25%,so that it improVes wearness of pavement. So,semi— flexible pavement has well synthetically performance and it is a new expressway pavement that is good for spreading.These results are significant to solve the problems
in highway engineering.
Key words:road engineering;semi—flexible pavement;road performance;laboratory test;mechanism analysis;
万 方数据
2009年第2期 戴学臻 蒋应军:水泥混凝土路面重载与重载交通的界定方法 一57一
现行规范m1初拟板厚的基础上,提出了各级公路水 泥混凝土路面的重载界限。
l重载与重交通
这里提到的重载和现行规范中按照交通等级划 分的重交通不是一个概念。规范按使用初期设计车 道每日通过的标准轴载作用次数分为4级:特重、 重、中等以及轻(表1)。其中特重与重交通分别是 指使用初期设计车道每日通过的标准轴载作用次数 N。大于2oOo次以及100~2oOO次的交通状况。 而本文认为重载交通应包括两方面的意思:(1)轴载 偏重,同时为承担较重的轴载,胎压偏高;(2)轴载作 用次数多,交通繁忙。
表l交通分级
交通等级 特重 重 中等 轻 设计车道标准
轴载累计作用 >2OOO 2000~100100~3<3次数m>3次数m>
2重载的界定
在人们受经济利益的驱使、重载现象日趋严重 的交通状况下,对于按照正常轴载和交通组成条件 下设计成的路面结构,其实际应力水平已经处于大 应力比范围。在这种状况下,路面结构会在短期内 迅速损坏,路面厚度经济比非常差。
水泥混凝土路面常规结构在一般荷载作用下的 应力比范围在o.2~0.65之间。同济大学所做的疲 劳试验,根据此种情况采用的应力比范围在O.55~ 0.85之间。这与当时的交通荷载状况是相适应的。 但是随着重载车辆在交通组成中所占比例的提高, 对路面板较薄的水泥混凝土路面而言,有些荷载作 用下的应力比可超过O.85,甚至可达到1.o而出现 一次性荷载作用后断板的现象。
在上述情况下,可以看出界定重载的标准实际 是板厚^以及基层顶面回弹模量与交通组成中最大 轴重的关系。这一标准也是界定路面板厚度是否合 理的一个判断条件。
当应力比S=1时,假设公路自然区划为Ⅲ区, 板体尺寸为5m×4.5m×JIl,在最不利温度应力的 条件下,一次荷载作用下水泥混凝土面板所能承受 的最大轴重,见图1和图2。
从图1、图2可以看出,在水泥混凝土弯拉弹性
500
400
至300
唧
霹200
100
O
::■~。
=:=;=:S 一——。~_’——; :
lOO 120140160180200
模量比丘/艮
注:E和E。分别为水泥混凝土面板和地基的弹性模量;24、 26、28、30、32cm为水泥混凝土面板厚度。
图1水泥混凝土面板所能承受的最大轴重关系曲线 (单后轴J
≥\
≤≥≤≮ ~≤=S
lUU 12U 140160180200
模量比丘/厶
图2水泥混凝土面板所能承受的最大轴重关系曲线 (双后轴)
模量一定的情况下,随着板厚的增加,承受的极限轴 重增加较快。板厚由24cm增加到32cm,仅仅增 加8cm,所能承受的轴重几乎增加将近1倍。由此 可见,适当增加面板厚度是有效提高路面使用寿命 的途径。地基刚度的增加也能提高路面板的抗荷载 能力。但相对板厚来说,其影响并不大。
根据上述计算分析可知,随着面板厚度的增加, 可有效地提高承载能力。然而,我们也希望在板厚 增加与荷载之间寻找到一个最佳的厚度经济比值, 以保证水泥混凝土路面获得相对较长的寿命。从设 计的角度考虑,该荷载即为此板厚的重载界限。 2.1水泥混凝土路面重载界定方法
我国现行水泥混凝土路面设计规范中采用的荷 载应力计算式,是在20世纪80年代采用有限元分 析得到的单轴和双轴荷载应力计算结果,通过回归 分析得出如下荷载应力计算公式:
叮=A中害
式中:P。为轴载(单轴重或双轴重),kN;矗为面 板厚度,m;r为路面板的相对刚度半径,见式(2),m; A、研和,2为回归系数,见表2。
O
O
加
∞
舳
∞
加
z芒懈暴
万 方数据
公 路 2009年第2期
一[端]1/3
㈤
式中:户o、肚为地基和水泥混凝土的泊松比,通 常分别取O.30和O.15;E、E为地基和水泥混凝土
的回弹模量,MPa。
表2荷载应力公式回归系数
轴
型
A
单轴一单轮 O.00180O.490
O.881单轴一双轮组
O.001190.5970.905双轴一双轮组 O.OOO
599
0.585O.893三轴一双轮组
0.000395
0.493
0.892
规范将式(2)简化为:
r-o.537^(科3
(3)
式中:E为基层顶面当量回弹模量,MPa。 由式(1)可得:
驴(搿)““
㈤
将式(2)代人式(4)可得:
驴(竽)v^?[端r
㈣
取口一S?(L/以一‰),代入式(5)可得:
P一[盥玉萨卜[鹬]-f㈣
20000ooO
l
一.
.』
O 02040.6081.O 应力比S (a)高速、一级公路
900ooO 800000700000
墓600000蜊 鬈500
000
辎
衄400000抓
稻300ooO 霹
200000
loo 000
O
式中:P为重载界限(单轴重或双轴重),kN;S
为应力比;厶为水泥混凝土的弯拉强度,MPa;以为
可靠度系数,依据所选目标可靠度及变异水平等级
确定;‰为最大温度梯度时水泥混凝土板的温度翘
曲应力,MPa。
通过式(6)可以得出水泥混凝土板厚、基层顶面 回弹模量与交通组成中最大轴重的关系。据此,可 以对应规范中初拟面层板厚度和基层顶面最小当量 回弹模量得出重载界限,见表3。
表3初拟面层板厚度和基层顶面最小当量回弹模量 公路等级
高速、一级
二级
三级
初拟面层板厚/cm
26
24
22
E,/MPa
12010080
现在需要确定的是应力比S的取值范围,即当 应力比取多大时,轴重对于路面结构的破坏作用处 于突变状态。
根据规范轴载当量换算系数公式K州一岛?
,D、16
(蠢),对于上述路面结构(考虑最不利温度应力的
影响,假设公路自然区划为Ⅲ区,路面板体尺寸为
5m×4.5
m×^),取S的范围为0~1,计算K州的
值如图3所示。
7
f
…
.|i
O 020.4060.81.O
应力比S (b)二级公路
300000
250000
墓200
ooo
幅 琳
耧150000咖 抓
繇100000撬
50000
图3轴载当■换算系数K,.。与应力比s对应关系
从图3中我们可以看出:当应力比水平处于5=o.6附近时,轴载当量换算系数K州数值产生突 变。当S>O.6时,路面结构会在短期内迅速损坏, 路面厚度经济效益比非常差。因此,认为取S=O.6
r
/
……二
00上040.6081.O
应力比S (c)三级公路
作为重载交通的界限是比较适宜的。
选取大量路面结构进行温度应力计算,结果表 明温度应力口。变化不大,一般在1.O~1.3MPa之 间。取不利值1.3
MPa,水泥混凝土板弯拉强度厶
O 0
∞ ∞ ∞ O O O O O O O O O O O O 864
万 方数据
2009年第2期 戴学臻蒋应军:水泥混凝土路面重载与重载交通的界定方法
取5.o MPa,可靠度系数取1.33,则可得重载界限 所对应允许应力值为1.47MPa。将其代入式(6) 中,可得到重载界限:
P=(鼍})““?(警)一 ∽
在这种应力水平下,单轴载值的计算结果分别为: 143.5kN、121.8kN和101.3kN。建议作为重载 界限时取整,重载交通界限的计算结果如表4所示。 表4重载界限
公路等级 高速、一级 二级 j级 单轴一双轮组/kN 140120lOO
双轴一双轮组/kN 330Z80230
2.2重载交通的界定
在发达国家,由于有比较健全的轴载管理机制, 重载交通主要体现为货运向集装箱、大型化、多轴化 方向发展,累计当量轴次基本能反映交通特性,所以 一般以某个临界累计当量轴次或日均重型汽车数来 界定是否为重载交通。
在我国,重载交通道路主要分为3类:运煤专用 线,主要分布在产煤区和煤炭的销往地区;集装箱专 用线,多以重要港口附近的干线公路为主;国道主干 线,主要指重要的货运通道和工业区附近的道路。 这些道路的交通轴载换算成标准轴载后,累计当量 轴次远远大于规范中特重交通所对应的设计车道标 准轴载累计作用次数(2×107次),如上海集装箱线 路的平均有效AAD丁为3081辆,山西运煤线路的 平均有效AADT为4500辆。由于普遍存在超载 现象且较为严重,如果将其换算为标准轴载作用次 数,则日标准轴载次数将大于1×104次,设计车道 标准轴载累计作用次数至少在5×107次以上,可见 现有的交通分级标准已经不符合实际情况。交通部 某交通研究院提出将轴载作用次数为2×107次以 上的交通量分为3个等级:重载(2×107~4×107次),超重载(4×107~8×107次),特重载(8×107次以上)。
以轴载累计作用次数分级的方法是以传统的轴 载换算方法为基础,由于疲劳试验和换算方法上的 一些缺陷,不能反映实际的道路轴载组成对路面设 计的影响。综合分析我国目前重载道路和普通道路 的交通组成情况,初步建议重载交通用单轴双轮轴 重大于100kN的轴次占混合交通(机动车)总量百 分比来界定。轴重大于100kN的车型主要为重型 载货汽车,以及大型客车和部分超载严重的中型载 货汽车。随着国家对载货汽车超限、超载治理力度 的加大,以及运输部门为了提高运输效益,重型载货 汽车必将成为大宗货物运输的主流车辆。因此,重 载交通亦可以简单地用重型载货汽车在道路上行驶 的比重来界定。
收集国内普通道路交通组成资料,经统计分析表 明,重型载货汽车数与混合交通之比呈正态分布状态, 两者之比均值为o.14,标准差为o.023,变异系数为 9.58%。如果取保证率为95%,则两者之比应为(o.14±O.023×1.645)×100%,约在10%~18%之间。
而对运煤专用线、集装箱专用线以及货运通道 和工业区附近国道主干线的交通组成资料统计分析 表明,重型载货汽车数与混合交通之比也遵循正态 分布规律,但两者比值均值变化范围在20%~80%之间。另外,由于运输货物不同,表现出车型差异非 常大。
综上所述,重载交通道路可以理解为某些具有 特定使用要求、作为大宗货物运输主要通道的道路, 如运煤(或矿石)专线、集装箱专用线等,这些道路上 行驶的重型载货汽车比重远大于普通道路上的重型 载货汽车比重。
考虑到我国道路的实际轴载谱整体上大大超过 100kN轴载标准,本文建议当道路上行驶的重型载 货汽车交通量与混合交通量之比大于20%时称为 重载交通。由此可见,重载交通是一个相对概念,不 同时期由于交通结构(铁路运输和公路运输)变化、 国家对运输管理政策的变化以及公路网的完善等 等,其内涵也是变化的。
3结语
(1)通过对水泥混凝土路面的应力分析,认为适 当增加面板厚度是有效提高路面使用寿命的途径。 地基刚度的增加也能提高路面板的抗荷载能力,但 相对板厚来说其影响较小。
(2)在荷载作用下,水泥混凝土面板应力比水平 处于5=O.6附近时,轴载当量换算系数K川数值 产生突变。当S>0.6时,路面结构会在短期内迅 速损坏,路面厚度经济效益比非常差。因此,认为取 S=O.6作为重载的界限是比较适宜的。
(3)通过式(7)可以得出水泥混凝土板厚、基层 顶面回弹模量与交通组成中一定应力比下最大轴重 的对应关系。据此,本文根据面层板厚度和基层顶
万 方数据
一60一 公 路 2009年第2期
面最小当量回弹模量提出了各级公路水泥混凝土路 面的重载界限,以便采取相应的措施。
(4)考虑到我国重载道路的实际轴载谱整体上 大大超过100kN轴载标准,本文建议当道路上行驶 的重型载货汽车交通量与混合交通量之比大于 20%时称为重载交通。
参考文献:
[1]蒋应军,等.重载水泥混凝土路面损坏机理及对策研 究[J].公路交通科技,2005,(7).
[2]杨锡武,王东,张祖堂.汽车超载对水泥混凝土路面破 坏影响的力学机理分析[J].重庆交通学院学报, 2004,23(6).
[3]唐伯明,蒙华,刘志军.欧美水泥混凝土路面设计使用 现状综述[J].公路,2003,(10). [4]蒋应军,戴经粱,陈忠达.重载水泥混凝土路面疲劳方 程和车辆轴载的换算[J].长安大学学报(自然科学 版),2002,22(3).
[5]王选仓,等.重载水泥混凝土路面研究[刀.中国公路 学报,1999,12(1).
[6]张志清,傅海滨,金江.重载作用下沥青路面结构动力 特性分析[J].北京工业大学学报,2007,33(7).
[7]曾凡奇,黄晓明.超载对沥青路面的影响[J].交通运 输工程学报,2004,4(3).
[8]李海军,黄晓明.重载条件下沥青路面按弯沉等效的 轴载换算[J].公路交通科技,2004,(7).
[9]王辉,武和平.沥青路面按弯沉等效轴载换算的研究 [J].中国公路学报,2003,16(1).
[10]JTG D40一2002,公路水泥混凝土路面设计规范[s].
DiVision Methods of HeaVy Load and HeaVy Load Traffic
on Cement Concrete Pavement
DAl xue—zhen,J lANG Yin g-j un
(Key Laboratory for Special Area Highway Enginee ring of Ministry of Education,Chang’an University.Xi。an 710064,China)
Abstract:At present,the axle loads of large transport vehicles have increased greatly driven by the economic interest,which has caused huge damage on the pavements of the highway. Therefore,it is nece-ssary to identify the axle loads of the transport vehicles and propose the heavy load and heavy load traffic boundaries of the pavements for all level highways in order to formulate the design method of heavy load pavements,and carry out the relevant administrative management pohcies. The heavy load and heavy load traffic boundaries for the cement concrete pavements of all level highways are presented by the stress anal— ysis of paVement structure.
Key words:road engineering; cement concrete pavement; heavy load; heavy load traffic; load stress 万 方数据
范文三:方法重载
方法重载
●定义
在一个类中,同一个方法实现不同的操作即方法的重载
●重载的要求
1. 在同一个类中
2. 方法名必须相同
3. 参数列表不同
注意 :方法的重载与 返回值和访问修饰符 没有关系。
●例子
1. 比如驾驶员 driver 可以驾驶汽车,可以驾驶飞机,还可以驾驶轮船。
那么在写这个 driver 类的时候就要就要写驾驶飞机的方法, 又要写驾驶汽车的方法, 还要写驾驶轮船的方法。这时候方法的名字就不好进行编写了。
这时候就引进了方法的重载。
public void drive(Car car)
{
System. out .println(
}
/**
*驾驶轮船
*@paramship
*/
public void drive(Ship ship)
{
System. out .println(
}
/**
*驾驶飞机
*@paramplane
*/
public void drive(Plane plane)
{
System. out .println(
}
根据传进来的参数不同就可以区分这些方法 .
2. 如何通过重载的定义,实现现金支付,信用卡支付和现金与信用卡同时支付的业务 注意 :用户可以用现金支付,可以刷卡,可以现金和刷卡一起支付。
用户类 里面的三个重载方法:
/**
*直接使用现金购买
*@parammoney 用户的现金
*@paramprice 物品的价格
*/
public boolean pay(double money,double price)
{
if (money>price)
{
System. out .println(
return true ;
}
else
{
System. out .println(
return false ;
}
}
/**
*直接使用信用卡购买
*@paramcard
*@paramprice
*/
public void pay(Card card,double price)
{
if (card.getBalance()>price)
{
card.setBalance(card.getBalance()-price);
System. out .println(
}
else
{
System. out .println(
}
/**
*可以同时使用现金和信用卡购买 如果现金不够时使用信用卡
*@parammoney
*@paramcard
*@paramprice
*/
public void pay(double money,Card card,double price)
{
//如果现金不够
if (!pay(money, price))
{
//使用信用卡
pay(card, price);
}
}
测试类:
//实例化用户
User user=new User();
//实例化信用卡
Card card=new Card(2000);
//支付
//user.pay(3000,1500);
//user.pay(card, 1500);
user.pay(5000, card, 1500);
注意点:这边的的第三个 pay()方法可以用现金和刷卡来支付。
但是上面已经有过用现金支付和刷卡支付的方法了, 所以在这里面可以进行重 复调用, 但是要判断现金够不够, 所以现金支付的方法就必须要有一个返回值, 来 判断能不能支付。
范文四:方法重载
class Program
{
public int max(int x, int y)
{
return x >= y ? x : y;
}
public double max(double x, double y)
{
return x >= y ? x : y;
}
public int max(int x, int y,int z)
{
return max(max(x,y),z);
}
public double max(double x, double y,double z)
{
return max(max(x, y), z);
}
static void Main(string [] args)
{
Program obj = new Program ();
int a = 10, b = 20, c = 30;
double e = 1.5, f = 3.5, g = 5.5;
Console .WriteLine(
Console .WriteLine(
Console .WriteLine(
}
运算符重载
class Program
{
public int number1, number2;
public Program(int num1, int num2)
{
number1 = num1;
number2 = num2;
}
public static Program operator -(Program c1)
{
c1.number1 = -c1.number1;
c1.number2 = -c1.number2;
return c1;
}
public void display()
{
Console .WriteLine(
Console .WriteLine(
Console .ReadKey();
}
}
class Test
{
static void Main(string [] args)
{
Program obj = new Program (15,-25);
obj = -obj;
obj.display();
}
}
class NumberCount
{
public int i;
public NumberCount(int initval)
{
this .i = initval;
}
public static NumberCount operator ++(NumberCount arg) {
arg.i++;
return arg;
}
}
class Test
{
static void Main(string [] args)
{
NumberCount count1 = new NumberCount (1); NumberCount count2 = count1++;
Console .WriteLine(count1.i);
Console .WriteLine(count2.i);
count2 = ++count1;
Console .WriteLine(count1.i);
Console .WriteLine(count2.i);
}
}
多态性
class Shape
{
protected double width;
protected double height;
public Shape()
{
width = height = 0;
}
public Shape(double x)
{
width = height = x;
}
public Shape(double w, double h)
{
width = w;
height = h;
}
public double area()
{
return width * height;
}
}
class Triangle :Shape
{
public Triangle(double x, double y) : base (x, y) {
}
new public double area()
{
return width * height / 2;
}
}
class Trapezia :Shape
{
double width2;
public Trapezia(double w1, double w2, double h) : base (w1, h)
{
width2 = w2;
}
new public double area()
{
return (width + width2) * height / 2;
}
}
class Test
{
static void Main(string [] args)
{
Shape A = new Shape (2,4);
Triangle B = new Triangle (1,2);
Trapezia C = new Trapezia (2, 3, 4);
Console .WriteLine(
Console .WriteLine(
Console .WriteLine(
}
运行时多态性(虚函数)
class Shape
{
protected double width;
protected double height;
public Shape()
{
width = height = 0;
}
public Shape(double x)
{
width = height = x;
}
public Shape(double w, double h)
{
width = w;
height = h;
}
public virtual double area()
{
return width * height;
}
}
class Triangle :Shape
{
public Triangle(double x, double y) : base (x, y) {
}
public override double area()
{
return width * height / 2;
}
}
class Trapezia :Shape
{
double width2;
public Trapezia(double w1, double w2, double h) : base (w1, h)
{
width2 = w2;
}
public override double area()
{
return (width + width2) * height / 2;
}
}
class Test
{
static void Main(string [] args)
{
Shape A = new Shape (2,4);
Triangle B = new Triangle (1,2);
Trapezia C = new Trapezia (2, 3, 4);
Console .WriteLine(
Console .WriteLine(
Console .WriteLine(
}
范文五:C# 方法重载
C# 方法重载
在 C#中, 同一个类中的 2个或 2个以上的方法可以有同一个名字, 只要它们的 参数声明不同即可。在这种情况下,该方法就被称为重载(overloaded ) ,这个过程 称为方法重载(method overloading) 。方法重载是 C#实现多态性的一种方式。 调用方法时通过传递给它们的不同个数和类型的参数来决定具体使用哪个方 法,这就是多态性。如果以前从来没有使用过一种允许方法重载的语言,这个概念 有点不好理解, 但方法重载是 C#最激动人心和最有用的特性之一。 方法重载是让类 以统一的方式处理不同类型数据的一种手段。
当一个重载方法被调用时, C#用参数的类型和(或)数量来表明实际调用的重 载方法的版本。因此,每个重载方法的参数的类型或数量必须是不同的。虽然每个 重载方法可以有不同的返回类型,但返回类型并不足以区分所使用的是哪个方法。 当 C#调用一个重载方法时, 参数与调用参数匹配的方法被执行。 在使用重载要注意 以下的几点:
●在使用重载时只能通过不同的参数样式。例如,不同的参数类型,不同的参数个数, 不同的参数顺序。
●不能通过访问权限、返回类型、抛出的异常进行重载。
●方法的异常类型和数目不会对重载造成影响。
●对于继承来说,如果某一方法在父类中的访问权限是 priavte ,那么就不能在子类对其 进行重载,如果定义,也只是定义了一个新方法,而不会达到重载的效果。
下面通过创建一个实例,来说明 C#中方法的重载。示例代码如下所示:
转载请注明出处范文大全网 » JAVA方法的重载与重写