Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java正在插入一个接口。具有附加功能_Java_Function_Implements - Fatal编程技术网

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类中?你能给我们展示一下你的interface
Album
吗?!这里似乎缺少这些方法。请提供相册的代码class@DanielDC
Album
既不指定
getArtist
也不指定
getTrackList
,只有
CDAlbum
指定。通过选中
Album.getMediaType
,可以确定
Album
CDAlbum
还是
DVD Album
;然后,如果它是一张CD,您可以将其转换为
CDAlbum
,然后调用
GetArtister
getTrackList
。我认为Album是CDAlbum或DVD Album接口的超级接口。请提供CD相册Interface@MohammodHossain
Album
是一个接口,它实现了
CDAlbum
DVD Album
功能。然后albumCollection.get(number)返回类型应为CDAlbum。然而,这会扼杀拥有一个接口的全部意义。我能不能公开变量并让它们像那样打印出来?不,因为Album对CDAlbum一无所知。CDAlbum是相册,但相册不是CDAlbum。