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
设计:基类还是接口
作者:
青羽
查看全文
相关阅读:
[Qt] 事件机制(四)
shell专题(六):条件判断
最小生成树
373. Find K Pairs with Smallest Sums
gradle代理设置
266. Palindrome Permutation
53. Maximum Subarray
378. Kth Smallest Element in a Sorted Matrix
240. Search a 2D Matrix II
74. Search a 2D Matrix
原文地址:https://www.cnblogs.com/tenghoo/p/1205515.html
最新文章
css3增加的的属性值position:stricky
Java连载38-对象封装性格式、构造方法
Java连载36-IDE使用
HTML连载40-盒子宽度和高度的练习、box-sizing属性
Java连载37-面向对象的封装性
Python连载40-协程定义及状态、send语句、yield用法
Java连载35-类总结、空指针异常
HTML连载39-外边距合并现象、盒子模型以及宽度和高度
Java连载34-对象的内存分析、对象之间建立关系
Python连载39-生成器、next函数、yield返回值
热门文章
Java连载33-对象的创建和使用、内存分析
[c++] inline
编程思想
[刷题] 剑指offer 面试题18:删除链表节点
javaWeb——jsp
javaWeb——Servlet(二)
[Java] javaEE
[Java] Servlet
[Java] Tomcat 部署
[刷题] 剑指Offer 面试题7:重建二叉树
Copyright © 2011-2022 走看看