| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4493 人关注过本帖
标题:[求助]迷茫中,接口可以直接实例化对象吗?
只看楼主 加入收藏
fqj793
Rank: 1
等 级:新手上路
威 望:2
帖 子:228
专家分:0
注 册:2006-12-9
收藏
 问题点数:0 回复次数:10 
[求助]迷茫中,接口可以直接实例化对象吗?
public interface setWeight
{
public void setw(double weight);
pbulic double getw();
}
下面的类中直接出现
class Train
{
...
setWeight thing[]=new setWeight[i];
...
}
不解中!求助各位!
搜索更多相关主题的帖子: 实例 接口 对象 
2007-08-29 20:15
george_vcool
Rank: 2
等 级:新手上路
威 望:3
帖 子:453
专家分:0
注 册:2007-7-23
收藏
得分:0 
这不是实例化对象?
这只是初始化数组!!!
2007-08-29 22:54
狂放不羁
Rank: 4
等 级:贵宾
威 望:12
帖 子:925
专家分:0
注 册:2007-1-24
收藏
得分:0 

这其实就看你对多态的理解了。。这只是定义了一个数组。这个数组中可以存储任何实现setWeight接口的类。。

2007-08-30 03:02
fqj793
Rank: 1
等 级:新手上路
威 望:2
帖 子:228
专家分:0
注 册:2006-12-9
收藏
得分:0 

可能是我没有写完整吧,还是我没有理解好
1 接口
public interface SetAndGetWeight
{
public void setW(double weight);
public double getW();
}

2 类
class Train
{
SetAndGetWeight[] things;
public void Train(SetAndGetWeight[] things)
{
this.things=things;
}
public void returnTotalWeight()
{
double totalweight=0;
for(int i=0;i<things.length;i++)
{
totalweight=totalweight+things[i].getW();
}
System.out.println("Train总的质量是:"+totalweight);
}
}


第3个类
import java.util.Scanner;
class TrainComWeight
{
public static void main(String[] arg)
{
Scanner rd=new Scanner(System.in);
System.out.println("请输入船上人数:");
int peonum=rd.nextInt();
System.out.println("请输入船上Tv数:");
int tvnum=rd.nextInt();
System.out.println("请输入船上COM数:");
int comnum=rd.nextInt();
System.out.println("请输入船上wash数:");
int washnum=rd.nextInt();
int totalnum=peonum+tvnum+comnum+washnum;
SetAndGetWeight[] things=new SetAndGetWeight[totalnum];
Train tr=new Train(things);
System.out.println("请输入各个人的体重!");
for(int i=0;i<peonum;i++)
{
System.out.println("请输入第"+i+"peo的重量");
things[i].setW(rd.nextDouble());
}
System.out.println("请输入TV的重量");
for(int j=peonum;j<peonum+tvnum;j++)
{
System.out.println("请输入第"+j+"tv的重量");
things[j].setW(rd.nextDouble());
}
System.out.println("请输入COM的重量");
for(int k=peonum+tvnum;k<peonum+tvnum+comnum;k++)
{
System.out.println("请输入第"+k+"CIN的重量");
things[k].setW(rd.nextDouble());

}
System.out.println("请输入WASH的重量");
for(int l=peonum+tvnum+comnum;l<totalnum;l++)
{
System.out.println("请输入第"+l+"WASH的重量");
things[l].setW(rd.nextDouble());
}

//System.out.println(train)
}
}
其中红色的地方Train tr=new Train(things);会报错"找不到符号"


知识改变命运!!!
2007-08-30 08:56
george_vcool
Rank: 2
等 级:新手上路
威 望:3
帖 子:453
专家分:0
注 册:2007-7-23
收藏
得分:0 

你没有这个构造方法啊!!当然找不到符号了

2007-08-30 09:33
fqj793
Rank: 1
等 级:新手上路
威 望:2
帖 子:228
专家分:0
注 册:2006-12-9
收藏
得分:0 
有呀,
public void Train(SetAndGetWeight[] things)
{
this.things=things;
}

知识改变命运!!!
2007-08-31 14:22
huwangvs
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:34
帖 子:764
专家分:0
注 册:2007-2-4
收藏
得分:0 

构造函数有返回值吗???

还有你的数组里面好像什么都没有啊。。。。

2007-08-31 18:15
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
恩恩~(装腔作势的咳嗽两下)~~总地来说,接口是不能被实例化地。
但是~~~~~~在内部类中,你是可以“实例化”一个接口的。

淘宝杜琨
2007-08-31 19:40
fqj793
Rank: 1
等 级:新手上路
威 望:2
帖 子:228
专家分:0
注 册:2006-12-9
收藏
得分:0 
确实不能全信书

知识改变命运!!!
2007-09-01 10:31
liguoshi1984
Rank: 1
等 级:新手上路
帖 子:89
专家分:0
注 册:2007-7-4
收藏
得分:0 

我是这么理解接口的.它的前身是抽象类,不过它只包含常量和方法声明而已.
所以它可以被声明,可以被继承,但不能被实例化.
一种数据类型,可以被声明的就能生成数组.
楼主所帖代码中的数组并不是实例化.你可以把它看做声明,在赋值的时候只能赋一个实现了该接口的对象,以实现接口回调.

2007-09-01 20:29
快速回复:[求助]迷茫中,接口可以直接实例化对象吗?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022604 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved