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
设计:基类还是接口
作者:
青羽
查看全文
相关阅读:
mongodb(2)
mongodb(1)
分片集群
副本集 集群
java连接腾讯云上的redis
maven打包
生成ftp文件的目录树
从ftp获取文件并生成压缩包
android 连续点击退出程序
Android之完美退出方法
原文地址:https://www.cnblogs.com/tenghoo/p/1205515.html
最新文章
PHP中fopen,file_get_contents,curl函数的区别
关于IP地址的一个细节问题
mysql中and和or
array_merge注意细节
php调用一个c语言写的接口问题
mysql limit查询优化
处理mysql上百万条数据的优化
mysql时间格式DATE_FORMAT()
foreach遍历遇到的一个细节问题
过滤封装
热门文章
php递归无限极分类实例
服务器保持与Mysql的连接
Mysql常用命令行大全
python日志模块
Python 时间和日期模块的常用例子
js获取url参数值
jquery一个按钮全选和反选
curl提交数据时中文乱码
java使用poi操作word, 支持动态的行(一个占位符插入多条)和表格中动态行, 支持图片
springboot调用mongo
Copyright © 2011-2022 走看看