2017-04-11 87 views
2
public class Member { 

private String name; 
private String address; 



public Member(String name,String address) 
{ 

    this.name=name; 
    this.address=address; 


} 
public String getName() 
{ 
    return name; 
} 
public void setName(String name) 
{ 
    this.name = name; 
} 
public String getAddress() 
{ 
    return address; 
} 
public void setAddress(String address) 
{ 
    this.address = address; 
} 

public String toString() 
{ 
return name +","+ " " + address; 
} 

public static void main(String[] args) { 

    Member m1=new Member("ravi","h-no :912"); 

    System.out.println(m1.toString()); 
} 

} 

我想擴展成員class.i應該只使用私有變量。在私有變量中使用私有變量

import java.util.ArrayList; 

public class Undergraduate extends Member { 
private int numCourses; 
private ArrayList<String> courses = new ArrayList<String>(); 
private ArrayList<Integer> grades = new ArrayList<Integer>(); 


public Undergraduate(String name, String address) { 
    super(name,address); 

} 
public void addCourseGrade(String course,int grade) 
{ 
    courses.add(course); 
    //String grade1=String.valueOf(grade); 
    grades.add(grade); 
} 
public double getAverageGrade() { 
    double sum=0; 
    for(int i=0; i < grades.size() ; i++) 
      sum = sum + grades.get(i); 

       //calculate average value 
    double average=0; 
    average= sum/grades.size(); 

    return average; 
} 

public String toString() 
{ 
return name +address;// i want to return undergraduate name and address here 
} 

public static void main(String args[]) 
{ 
    Undergraduate undg = new Undergraduate("kimi", "hno 123"); 
    undg.addCourseGrade("CS500", 2); 
    undg.addCourseGrade("CS560", 1); 
    System.out.println(undg.toString()); 
    System.out.println(undg.getAverageGrade()); 
} 
} 

我正在繼承成員類和本科班 我想在返回的toString本科名稱和地址()是可能的,如果我使用私有變量。

預期輸出繼電器:

kim hno 123 

回答

1

在代碼中,您無法訪問nameaddress因爲他們是private變量,而你可以使用getter方法,其是public,這樣你就可以訪問它們在如在方法toString()下面所示的任何類(即,不僅亞類):

public String toString() { 
    return getAddress() + getName(); 
} 

還有一點需要注意的是,因爲Undergraduate IS-A Member(繼承),你可以調用getAddress()getName()沒有創造Member類,即一個對象,非亞(沒有繼承),你需要Member類的對象來調用public(實例)方法。