Java正在插入一个接口。具有附加功能
你好,我在接口的实现中添加了两个新功能 这是实现文件Java正在插入一个接口。具有附加功能,java,function,implements,Java,Function,Implements,你好,我在接口的实现中添加了两个新功能 这是实现文件 import au.edu.uow.Collection.Album; import java.util.ArrayList; public class CDAlbum implements Album { private String Title; private String Genre; private String Artist; private String MediaType; priva
import au.edu.uow.Collection.Album;
import java.util.ArrayList;
public class CDAlbum implements Album {
private String Title;
private String Genre;
private String Artist;
private String MediaType;
private ArrayList<String> trackList;
public CDAlbum(String TempTitle, String TempGenre, String TempArtist, ArrayList<String> TempTracklist, String TempMediaType){
//Set initail variable values
Title = TempTitle;
Genre = TempGenre;
Artist = TempArtist;
trackList = TempTracklist;
MediaType = TempMediaType;
}
//Accessor Functions
public String getMediaType(){
//Return Media Type
return MediaType;
}
public String getTitle(){
//Return Title
return Title;
}
public String getGenre(){
//Return Genre
return Genre;
}
public String getArtist(){
//Return Artist
return Artist;
}
public ArrayList<String> getTrackList(){
//Return Tracklist
return trackList;
}
}
导入au.edu.uow.Collection.Album;
导入java.util.ArrayList;
公共类CDAlbum实现了相册{
私有字符串标题;
私人弦乐体裁;
私人弦乐演奏家;
私有字符串媒体类型;
私有ArrayList跟踪列表;
公共CDAlbum(字符串试探符、字符串临时类型、字符串临时艺术家、ArrayList试探符列表、字符串临时媒体类型){
//设置初始变量值
Title=tentitle;
体裁=临时体裁;
艺术家=临时艺术家;
trackList=trackList;
MediaType=TempMediaType;
}
//存取函数
公共字符串getMediaType(){
//返回媒体类型
返回媒体类型;
}
公共字符串getTitle(){
//返回标题
返回标题;
}
公共字符串getgreen(){
//返回体裁
回归体裁;
}
公共字符串getArtist(){
//回归艺术家
回归艺术家;
}
公共数组列表getTrackList(){
//返回跟踪列表
返回跟踪列表;
}
}
下面两个函数是添加的函数(getArtist(),getTrackList())
我遇到的问题是,当我试图从类文件调用这些函数时,会出现以下错误
./au/edu/uow/UserInterface/UserInterface.java:95: cannot find symbol
symbol : method getArtist()
location: interface au.edu.uow.Collection.Album
System.out.println(albumCollection.get(number).getArtist());
^
./au/edu/uow/UserInterface/UserInterface.java:98: cannot find symbol
symbol : method getTrackList()
location: interface au.edu.uow.Collection.Album
ArrayList<String> trackList = albumCollection.get(number).getTrackList();
/au/edu/uow/UserInterface/UserInterface.java:95:找不到符号
符号:方法getArtist()
位置:接口au.edu.uow.Collection.Album
System.out.println(albumCollection.get(number.getArtister());
^
./au/edu/uow/UserInterface/UserInterface.java:98:找不到符号
符号:方法getTrackList()
位置:接口au.edu.uow.Collection.Album
ArrayList trackList=albumCollection.get(number.getTrackList();
当我调用函数时
import au.edu.uow.Collection.Album;
System.out.println(albumCollection.get(number).getArtist());
//Access the track titles
ArrayList<String> trackList = albumCollection.get(number).getTrackList();
//Output collection
int arrayListSize = trackList.size();
for(int i = 0; i < arrayListSize; i++)
{
System.out.println( i + ": " + trackList.get(i));
}
导入au.edu.uow.Collection.Album;
System.out.println(albumCollection.get(number.getArtister());
//访问曲目标题
ArrayList trackList=albumCollection.get(number.getTrackList();
//输出集合
int arrayListSize=trackList.size();
for(int i=0;i
在接口中添加新方法时,必须在实现类中实现
检查albumCollection.get的类型(编号)
如果albumCollection.get(number)返回Album,则可以调用getArtister()Album是albumCollection.get(number)的返回类型吗?如果是这样,那么您还需要将getArtister和getTrackList方法添加到界面中。
Album
既不指定getArtister
也不指定getTrackList
:
public interface Album {
/**
* This method returns the media type of the album.
* @return the media type of the album, either CD or DVD
* @see #getTitle()
* @see #getGenre()
*/
String getMediaType();
/**
* This method returns the title of the album.
* @return the title of the album
* @see #getMediaType()
* @see #getGenre()
*/
String getTitle();
/**
* This method returns the genre of the album.
* @return the genre of the album
* @see #getTitle()
* @see #getMediaType()
*/
String getGenre();
}
。。。只有CDAlbum
可以
通过选中Album.getMediaType
,可以确定Album
是CDAlbum
还是DVD Album
;然后,如果它是一张CD,您可以将其转换为CDAlbum
,然后调用getArtist
和getTrackList
for (final Album album : albumCollection) {
final String type = album.getMediaType();
System.out.print(type + " album: " + album.getTitle()
+ " (" + album.getGenre() + ") - ");
if (type.equals("CD")) {
final CDAlbum cd = (CDAlbum) album;
System.out.println(cd.getArtist());
int n = 0;
for (final String track : cd.getTrackList()) {
System.out.printf("#%2d - %s\n", ++n, track);
}
} else {
final DVDAlbum dvd = (DVDAlbum) album;
System.out.println(dvd.getDirector());
System.out.println(dvd.getPlotOutline());
}
}
创建一个超类,例如
MasterAlbums
并从中扩展CDAlbum
和dvdalmbum
。将方法getArtist()
和getTrackList()
放在超类中。不要在子类中重写它。现在,当您调用System.out.println(albumCollection.get(number.getArtist());代码>,它将引用超类方法,并将打印您的艺术家和轨迹列表。您的意思是我必须在界面中声明它?有没有其他方法可以让我直接将其应用到interface类中?你能给我们展示一下你的interfaceAlbum
吗?!这里似乎缺少这些方法。请提供相册的代码class@DanielDCAlbum
既不指定getArtist
也不指定getTrackList
,只有CDAlbum
指定。通过选中Album.getMediaType
,可以确定Album
是CDAlbum
还是DVD Album
;然后,如果它是一张CD,您可以将其转换为CDAlbum
,然后调用GetArtister
和getTrackList
。我认为Album是CDAlbum或DVD Album接口的超级接口。请提供CD相册Interface@MohammodHossainAlbum
是一个接口,它实现了CDAlbum
和DVD Album
功能。然后albumCollection.get(number)返回类型应为CDAlbum。然而,这会扼杀拥有一个接口的全部意义。我能不能公开变量并让它们像那样打印出来?不,因为Album对CDAlbum一无所知。CDAlbum是相册,但相册不是CDAlbum。