2013-03-21 202 views
-1

我在介绍性的Java课程中学习继承。我不得不创建一个已经写尽专用的用户名变量公共超码内的新方法(getUserName)和它编译和运行良好:继承问题

import java.util.ArrayList; 

public class Post 

    private String username; // username of the post's author 
    private long timestamp; 
    private int likes; 
    private ArrayList<String> comments; 

    /** 
    * Constructor for objects of class Post. 
    * 
    * @param author The username of the author of this post. 
    */ 
    public Post(String author) 
    { 
     username = author; 
     timestamp = System.currentTimeMillis(); 
     likes = 0; 
     comments = new ArrayList<String>(); 
    } 

    /** 
    * Record one more 'Like' indication from a user. 
    */ 
    public void like() 
    { 
     likes++; 
    } 

    /** 
    * Record that a user has withdrawn his/her 'Like' vote. 
    */ 
    public void unlike() 
    { 
     if (likes > 0) { 
      likes--; 
     } 
    } 

    /** 
    * Add a comment to this post. 
    * 
    * @param text The new comment to add. 
    */ 
    public void addComment(String text) 
    { 
     comments.add(text); 
    } 

    /** 
    * Return the time of creation of this post. 
    * 
    * @return The post's creation time, as a system time value. 
    */ 
    public long getTimeStamp() 
    { 
     return timestamp; 
    } 

    /** 
    * Display the details of this post. 
    * 
    * (Currently: Print to the text terminal. This is simulating display 
    * in a web browser for now.) 
    */ 
    public void display() 
    { 
     System.out.println(username); 
     System.out.print(timeString(timestamp)); 

     if(likes > 0) { 
      System.out.println(" - " + likes + " people like this."); 
     } 
     else { 
      System.out.println(); 
     } 

     if(comments.isEmpty()) { 
      System.out.println(" No comments."); 
     } 
     else { 
      System.out.println(" " + comments.size() + " comment(s). Click here to view."); 
     } 
    } 
    public String getUserName() 
    { 
     return username; 
    } 

    /** 
    * Create a string describing a time point in the past in terms 
    * relative to current time, such as "30 seconds ago" or "7 minutes ago". 
    * Currently, only seconds and minutes are used for the string. 
    * 
    * @param time The time value to convert (in system milliseconds) 
    * @return  A relative time string for the given time 
    */ 

    private String timeString(long time) 
    { 
     long current = System.currentTimeMillis(); 
     long pastMillis = current - time;  // time passed in milliseconds 
     long seconds = pastMillis/1000; 
     long minutes = seconds/60; 
     if(minutes > 0) { 
      return minutes + " minutes ago"; 
     } 
     else { 
      return seconds + " seconds ago"; 
     } 
    } 
} 

但是,当我尝试调用此方法(在printShortSummary内法)在子类中不能编译:

`enter code here`import java.util.ArrayList; 
`enter code here`public class MessagePost extends Post 
{ 
    private String message; // an arbitrarily long, multi-line message 

    /** 
    * Constructor for objects of class MessagePost. 
    * 
    * @param author The username of the author of this post. 
    * @param text  The text of this post. 
    */ 
    public MessagePost(String author, String text) 
    { 
     super(author); 
     message = text; 
    } 
    public String printShortSummary; 
    { 
     System.out.println("Message post from " + getUserName); 

    } 
    /** 
    * Return the text of this post. 
    * 
    * @return The post's message text. 
    */ 
    public String getText() 
    { 
     return message; 
    } 
} 
+0

经过一番编辑,这没有任何意义,是printShortMemory的一种方法? – 2013-03-21 03:45:24

+0

你得到的错误是什么 – PSR 2013-03-21 03:46:01

+0

错误你没有在方法中返回一个字符串! – smk 2013-03-21 03:46:39

回答

1

调用方法为(括号内用)如下:

System.out.println("Message post from " + getUserName()); 

而且,你要么必须做出个e printShortSummary方法无效或返回一些字符串。

1

你应该把它作为方法的人, 这样称呼它

System.out.println("Message post from " + getUserName()); 
2

System.out.println("Message post from " + getUserName);

应该

System.out.println("Message post from " + getUserName());

getUserName()是一种方法,即使它没有参数,也需要在其末尾加括号。

2

变化

public String printShortSummary; 
{ 
    System.out.println("Message post from " + getUserName); 

} 

public String printShortSummary() 
{ 
    String username; 
    System.out.println("Message post from " + getUserName()); 
    username = getUsername(); 
    return username; 
} 

规则

你的方法printShortSummary()必须返回一个字符串值。当你调用一个方法时,不要忘记括号()。最终你的错误大多是一个错字,我建议你使用像Netbeans或Eclipse这样的IDE,这样就可以很容易地纠正错误。

+0

感谢所有人的帮助!我仍然很绿(显然) – user2193513 2013-03-22 02:02:47