zoukankan
html css js c++ java
基本类型接口(二、EIMI)
14
.
4
调用接口方法详解
14
.
5
接口方法的隐式和显式调用
14
.
6
泛型接口
14
.
7
泛型接口和接口约束
14
.
8
实现具有多个方法名和签名的多个接口
14
.
9
用显示接口方法实现改进编译时类型安全
class
Program
{
public
static
void
Main()
{
SomeValueType sv
=
new
SomeValueType(
5
);
Object o1
=
new
object
();
Int32 n
=
sv.CompareTo(sv);
//
装箱操作
//
n = sv.CompareTo(o1);
//
编译通过,出现运行时错误
OtherValueType ov
=
new
OtherValueType(
5
);
Object o2
=
new
object
();
n
=
ov.CompareTo(ov);
//
没有进行装箱操作
//
n = ov.CompareTo(o2);
//
编译时错误
Console.WriteLine(n);
Console.ReadLine();
}
}
//
未使用EIMI
internal
struct
SomeValueType : IComparable
{
private
Int32 m_x;
public
SomeValueType(Int32 x)
{
m_x
=
x;
}
public
Int32 CompareTo(Object other)
{
return
(m_x
-
((SomeValueType)other).m_x);
}
}
//
使用EIMI
internal
struct
OtherValueType : IComparable
{
private
Int32 m_x;
public
OtherValueType(Int32 x)
{
m_x
=
x;
}
public
Int32 CompareTo(OtherValueType other)
{
return
(m_x
-
other.m_x);
}
Int32 IComparable.CompareTo(Object other)
{
return
CompareTo((OtherValueType)other);
}
}
14
.
10
谨慎使用显示接口方法实现
//
//
internal class Base : IComparable {
//
//
显式接口方法
//
Int32 IComparable.CompareTo(Object o) {
//
Console.WriteLine("Base.ComparaTo");
//
return 0;
//
}
//
}
//
internal class Derived : Base,IComparable {
//
//
接口实现的公共方法
//
public Int32 CompareTo(Object o){
//
Console.WriteLine("Derived.ComparaTo");
//
//
调用基类的CompareTo会导致错误
//
//
base.CompareTo(o);
//
return 0;
//
}
//
}
//
正确定义Base和Derived
internal
class
Base : IComparable
{
//
显式接口方法
Int32 IComparable.CompareTo(Object o)
{
Console.WriteLine(
"
Base's IComparable ComparaTo
"
);
return
0
;
}
//
基类的虚方法
public
virtual
Int32 CompareTo(Object o)
{
Console.WriteLine(
"
Base's virtual ComparaTo
"
);
return
0
;
}
}
internal
class
Derived : Base, IComparable
{
//
也是接口实现的公共方法
public
override
Int32 CompareTo(Object o)
{
Console.WriteLine(
"
Derived.ComparaTo
"
);
return
base
.CompareTo(o);
}
}
14
.
11
设计:基类还是接口
作者:
青羽
查看全文
相关阅读:
搬运好文章->>>>>子网划分详解
搬运好文章->>>>>子网掩码详解
搬运好文章->>>>>IP地址和MAC地址详解
搬运好文章->>>>>计算机中进制之间的关系和转换
extend 与 append 的区别
数据类型---字符串
多引号的作用,字符串格式化
列表复制的几种方法
十六进制和二进制转换
python奇偶数求和
原文地址:https://www.cnblogs.com/tenghoo/p/1205515.html
最新文章
MYSQL的索引及底层原理详解
MyISAM与InnoDB 的区别
最全MySQL知识体系考点复盘总结
JVM内存溢出分析实战
SpringBoot整合RockeyMQ
Rockey基本概念
linux安装RocketMQ4.X控制台
linux安装maven
QNX 多线程 (线程1每隔20ms读取 number;线程2每隔10ms计算一次)
QNX驱动开发——中断处理(转载)
热门文章
线程互斥锁相关程序《转载》
进程,线程,协程的相关解释 《转载》
linux c编程 多线程(初级)《转载》---赠人玫瑰,手有余香!
linux下C/C++,多线程pthread《转载》
什么是货币基金?
互联网测试人员该知道的网络小知识
分享个免费的svn平台
ARP 协议学习
icmp协议学习。
搬运好文章->>>>>超网合并详解
Copyright © 2011-2022 走看看