社区
C#
帖子详情
接口不能实例化?还是什么?
不懂必须要问
2009-01-31 01:23:52
关键字abstract和sealed不能在接口中使用,因为这两个修饰符在接口定义中是没有意义的(它们不包含执行代码,所以不能直接实例化,且必须是可以继承的)。
接口不是类,所以没有继承System.Object。但是为了方便,System.Object的成员可以通过接口类型的变量来访问。
如上所述,不能用实例化类的方式来实例化接口。
...全文
738
15
打赏
收藏
接口不能实例化?还是什么?
关键字abstract和sealed不能在接口中使用,因为这两个修饰符在接口定义中是没有意义的(它们不包含执行代码,所以不能直接实例化,且必须是可以继承的)。 接口不是类,所以没有继承System.Object。但是为了方便,System.Object的成员可以通过接口类型的变量来访问。 如上所述,不能用实例化类的方式来实例化接口。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
随枫而来
2011-08-17
打赏
举报
回复
顶起来!!!
tianjinldl
2009-02-01
打赏
举报
回复
UP
ProjectDD
2009-01-31
打赏
举报
回复
接口引用实例
不懂必须要问
2009-01-31
打赏
举报
回复
[Quote=引用 7 楼 pp_shy 的回复:]
引用 2 楼 MoreQuestion 的回复:
什么意思呢?
1namespace ConsoleApplication1
2{
3 class Program
4 {
5 static void Main(string[] args)
6 {
7 USB usb;
8 usb = new UDisk();//插入U盘
9 usb.OutputFile();//从U盘读出文件
10 usb.InputFile();//往U盘写入文件
11 usb.Dispose();//拔出U盘
12 Console.…
[/Quote]
多谢,原来这样的啊。
HDNGO
2009-01-31
打赏
举报
回复
接口因为没有实现代码,所以不能实例化。
如果要使用一个接口的话,必须用一个类来实现这个接口,然后实例化这个类。
你例子中的UDisk什么的就是具体的类,USB是接口~~
USB usb = new UDisk(); 实例化UDisk类来实现USB接口~~
不懂必须要问
2009-01-31
打赏
举报
回复
是啊,这样只是声明?还是定义?不是实例化。
不懂必须要问
2009-01-31
打赏
举报
回复
abstract class A
{
}
A a;
这样可以吧?因为我不是实例化吧?
不懂必须要问
2009-01-31
打赏
举报
回复
[Quote=引用 6 楼 king19840811 的回复:]
可是这里USB 接口实例化了。USB usb;
你先搞清什么是实例化吧。。。
USB usb=new USB();这才是实例化
[/Quote]
啊,这样才是实例化啊?
可惜没说要new才算实例货啊。
pp_shy
2009-01-31
打赏
举报
回复
[Quote=引用 2 楼 MoreQuestion 的回复:]
什么意思呢?
1namespace ConsoleApplication1
2{
3 class Program
4 {
5 static void Main(string[] args)
6 {
7 USB usb;
8 usb = new UDisk();//插入U盘
9 usb.OutputFile();//从U盘读出文件
10 usb.InputFile();//往U盘写入文件
11 usb.Dispose();//拔出U盘
12 Console.WriteLine("");
13 u…
[/Quote]
这里进行实例化的只有UDisk、MDisk、MP4这3个类而已
USB usb = new UDisk();//插入U盘
上面的这行代码其实是先实例化了一个UDisk的类,然后再把UDisk类的实例隐式转换成USB接口的一个对象usb
(因为UDisk类派生自USB接口,所以可以隐式转换)
USB usb = new UDisk();这行代码等同于下面的形式
UDisk uDisk = new UDisk();
USB usb = uDisk;
同理:
USB usb = new MDisk();//插入移动硬盘
USB usb = new MP4();//插入MP4
king19840811
2009-01-31
打赏
举报
回复
可是这里USB 接口实例化了。USB usb;
你先搞清什么是实例化吧。。。
USB usb=new USB();这才是实例化
Deathsign
2009-01-31
打赏
举报
回复
接口不能直接实例化
但是接口派生出来的抽象类可以实例化
同时 所有派生出来的抽象类都可以强制转换成接口的实例……
猿敲月下码
2009-01-31
打赏
举报
回复
你可以把接口看成一个纯粹的抽象类。抽象类是不能创建对象的
wuyq11
2009-01-31
打赏
举报
回复
是的。不能实例化。
不懂必须要问
2009-01-31
打赏
举报
回复
什么意思呢?
1namespace ConsoleApplication1
2{
3 class Program
4 {
5 static void Main(string[] args)
6 {
7 USB usb;
8 usb = new UDisk();//插入U盘
9 usb.OutputFile();//从U盘读出文件
10 usb.InputFile();//往U盘写入文件
11 usb.Dispose();//拔出U盘
12 Console.WriteLine("");
13 usb = new MDisk();//插入移动硬盘
14 usb.OutputFile();//从移动硬盘读出文件
15 usb.InputFile();//往移动硬盘写入文件
16 usb.Dispose();//拔出移动硬盘
17 Console.WriteLine("");
18 usb = new MP4();//插入MP4
19 usb.OutputFile();//从MP4读出文件
20 usb.InputFile();//往MP4写入文件
21 usb.Dispose();//拔出MP4
22 Console.ReadKey();
23 }
24
25 //USB接口
26 public interface USB : IDisposable
27 {
28 void OutputFile();//读出文件
29 void InputFile();//写入文件
30 }
31
32 //U盘
33 public class UDisk : USB
34 {
35 public UDisk()
36 {
37 Console.WriteLine("U盘准备就绪");
38 }
39 public void OutputFile()
40 {
41 Console.WriteLine("从U盘读出文件");
42 }
43 public void InputFile()
44 {
45 Console.WriteLine("往U盘写入文件");
46 }
47 public void Dispose()
48 {
49 Console.WriteLine("U盘已被拔出");
50 }
51 }
52
53 //移动硬盘
54 public class MDisk : USB
55 {
56 public MDisk()
57 {
58 Console.WriteLine("移动硬盘准备就绪");
59 }
60 public void OutputFile()
61 {
62 Console.WriteLine("从移动硬盘读出文件");
63 }
64 public void InputFile()
65 {
66 Console.WriteLine("往移动硬盘写入文件");
67 }
68 public void Dispose()
69 {
70 Console.WriteLine("移动硬盘已被拔出");
71 }
72 }
73
74 //MP4
75 public class MP4 : USB
76 {
77 public MP4()
78 {
79 Console.WriteLine("MP4准备就绪");
80 }
81 public void OutputFile()
82 {
83 Console.WriteLine("从MP4读出文件");
84 }
85 public void InputFile()
86 {
87 Console.WriteLine("往MP4写入文件");
88 }
89 public void Dispose()
90 {
91 Console.WriteLine("MP4已被拔出");
92 }
93 }
94 }
95}
可是这里USB 接口实例化了。USB usb;
king19840811
2009-01-31
打赏
举报
回复
都被你说完了
接口是一组方法的原型不能实例化。
java
接口
不能
实例化
原因浅谈
本文详细解析Java
接口
为何
不能
实例化
,通过
实例化
过程的直观解释,阐述
接口
与类的区别,并引入匿名内部类的概念,帮助读者理解其在代码实现中的巧妙运用。
接口
为什么
不能
实例化
?
本文详细解析了Java中为何
不能
直接
实例化
接口
,通过对比具体类的
实例化
过程,阐述了
接口
实例化
的实质及背后原理,揭示了匿名内部类与
接口
实现之间的联系。
java
接口
不能
实例化
怎么调用_Java
接口
为什么
不能
实例化
本文解释了Java中为何
不能
直接
实例化
接口
的原因,通过对比类的
实例化
过程,阐述了
接口
与类在内存中分配的区别,以及
接口
如何通过匿名内部类的方式被使用。
java
接口
能被
实例化
吗_java的
接口
为什么
不能
实例化
本文解释了Java
接口
为何
不能
实例化
,通过内存模型分析指出
接口
仅包含静态成员,
实例化
无实际意义,占用空间但无具体值存储,避免了资源浪费。
java的
接口
为什么
不能
实例化
本文解释了Java中
接口
不能
被
实例化
的原因。通过对比类的
实例化
过程,阐述了
接口
由于其特性,在堆内存中没有实际存储需求,因此
实例化
接口
并无实际意义。
C#
111,129
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章