社区
C#
帖子详情
接口不能实例化?还是什么?
不懂必须要问
2009-01-31 01:23:52
关键字abstract和sealed不能在接口中使用,因为这两个修饰符在接口定义中是没有意义的(它们不包含执行代码,所以不能直接实例化,且必须是可以继承的)。
接口不是类,所以没有继承System.Object。但是为了方便,System.Object的成员可以通过接口类型的变量来访问。
如上所述,不能用实例化类的方式来实例化接口。
...全文
682
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
打赏
举报
回复
都被你说完了
接口是一组方法的原型不能实例化。
阿里P7面试必备Spring整合MyBatis源码分析
【本课程带你深入源码剖析Spring整合MyBatis的内部实现】 Spring Framework的核心是ioc的依赖注入、aop的面向切... 3、Mapper
接口
是怎么
实例化
的? 4、Service中注入的Mapper
接口
是什么对象?如何
实例化
该注入的对象?
接口
为什么
不能
实例化
?
我在进行JDK源码测试发现一个问题: Map<String, Double> map = new Map<...Runable是一个
接口
,但是我们看到有new的情况,但是这种情况其实不是
接口
实例化
,只是换了一种写法,写法如下: cl.
Java中
接口
可以
实例化
吗?
接口
不可以
实例化
,但是
接口
变量可以指向该
接口
实现类的对象; 注意点:该
接口
变量
不能
使用实现类中有、
接口
中没有的方法; 原因 首先:
接口
可以看做是特殊的抽象类,其方法都是用public abstract修饰的抽象方法,...
抽象类为什么
不能
被
实例化
?
今天无意中看到一个问题:为什么抽象类
不能
实例化
? 很多人的答案都是再说使用抽象类的好处,但是并没有回答为什么
不能
实例化
?这个过程就像是在回答:为什么公鸡
不能
下蛋?然后回答是使用公鸡可以打鸣。 按照我的...
接口
能否
实例化
?
接口
可以
实例化
,但是不可以直接
实例化
,因为
接口
没有构造函数。通过类实现
接口
再将该类的实例赋值给
接口
对象是可以的,这是间接
实例化
。
C#
110,499
社区成员
642,566
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章