类和接口细节分析
来源:互联网 发布:山灵m2知乎 编辑:程序博客网 时间:2024/06/03 19:14
- 抽象类是否可继承接口?
抽象类里面可以包括抽象方法和非抽象方法,而接口只是定义了方法的原型,没有方法的具体定义。从这方面来分析,抽象类是可以继承接口的。
- 抽象类继承接口后,一定要实现接口中的成员方法么?
答案是否定的。
抽象类继承接口后,可以实现接口中的成员方法,也可以不实现。如果不实现接口中成员方法,只需将该方法声明为abstract类型就可以了。
interface ITemp
{
void IM();
}
abstract class CTemp : ITemp
{
public abstract void IM();
}
- (抽象)类继承类和接口的顺序是如何的?
class A
{
}
interface IA
{
}
interface IB
{
}
能否像下面一样定义一个类?
class B : IA, IB, A
{
}
答案是不可以。编译器会告诉你:基类A必须在任何接口之前。
所以应该写成:
class B : A, IA, IB
{
}
这是为什么呢?
下面是一家之言,仅供参考,不能保证所说的正确性。如果有误,敬请斧正。
针对上面的例子,假设类A中有一个方法时M,接口IA中同时声明了一个方法M。如果类B是按照IA, IB, A这样的顺序继承,则在B类型执行内存分配时,B对象的方法表里面首先加载接口IA中的方法的实现,之后是IB的,再之后是A的。因为A中也有方法M,所以这样的顺序是不是会认为M是IA中成员M的实现呢?如果类B是按照A, IA, IB这样的顺序继承,就不存在这样的情况了。
- 接口可以继承抽象类么?
接口只定义成员方法的原型,并不包括成员方法的实现。抽象类里面可能有实现的方法。如果说,接口可以继承抽象类,那这就和“接口只声明成员方法的原型,而没有具体方法的定义”相违背。
所以说,接口不能继承抽象类。
- 接口中可以包含属性和事件,但是不可以包含字段。
属性和事件在编译的时候编译器会自动将其转化成方法。
- 接口中不能再声明类型。例如接口中不能再定义类,不能再声明接口等等,但是类里面可以再定义类,再声明接口。
例如下面是合理的:
class N
{
interface IU { }
class CU { }
}
而
interface IB
{
interface IU { }
class CU { }
}
或者
interface IB
{
interface IU { }
}
是通不过编译的。
- 类如何做到隐藏接口中的实现方法?
如果一个类实现了一个接口中的方法M,则M应该声明为public,否则编译无法通过。但是如何让类的引用无法使用接口中的方法M呢?例如
http://images.cnblogs.com/cnblogs_com/edenia/243832/r_HideMethodsFromInterface.JPG
看上图,你会发现对象a的方法列表中并没有方法M。如何做到呢?
http://images.cnblogs.com/cnblogs_com/edenia/243832/r_HideMethodsFromInterface_1.JPG
是的,通过接口名称限定类中实现的接口中的方法。
像上面那样,如何访问到M呢?通过接口类型的引用访问即可,例如IA a = new CA();。
再讨论这样做是否有意义?
接口是为不相关的类提供通用的功能的,像上面,如果M对类CA的引用是隐藏的,我们完全可以将M这样的方法脱离出来再定义一个接口就哦可了。所以照这样说,上面那种做法是没有必要的。
- 类和接口细节分析
- 类和接口细节分析
- (抽象)类和接口细节分析
- (抽象)类和接口细节分析
- (抽象)类和接口细节分析
- 抽象类和接口中的细节
- hibernate中的核心类和接口细节总结
- 抽象类和接口分析
- 接口----细节
- 20160720(B) 接口及其特点/接口中的成员/其他细节/使用接口和抽象类的例子/抽象类和接口的区别/
- 抽象类和接口主要区别分析
- 从代码分析抽象类和接口
- java接口的细节!
- 接口中小细节
- 关于抽象类和接口的比较分析【更新】
- Java平台中接口和抽象类的差异分析
- 对Java接口和抽象类的认识及分析
- 深入分析Java的接口和抽象类
- 或许被我们遗忘的JAVA Math类
- struts1 一个很简单的登录演示
- Android四种Activity的加载模式
- design principle
- 8086/8088CPU的寄存器有4类
- 类和接口细节分析
- OpenWrt安装迅雷成功,实现BT emule等多协议下载
- Linux 修改IP和网关
- C#中的interface没那么简单
- 怎么靠互联网兼职赚点钱呢?做网站?威客?
- vs2008启动运行时类型信息.
- 机器学习中的数学(5)-强大的矩阵奇异值分解(SVD)及其应用
- 昂首步入Android 4.0.x 时代——新特性(官网英文)
- C# 文件读写与内存资源泄漏