3
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());
}

}

i am trying to extend Member class.i should use only private variables.

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());
}
}

i am inheriting Member class and Undergraduate class i want to return undergraduate name and address in toString() is it possible if i use private variables.

expected ouput:

kim hno 123
user7799918
  • 55
  • 1
  • 1
  • 6

1 Answers1

1

In your code, you can't access name and address because they are private variables, rather you can use the getter methods which are public, so you can access them in any class (i.e., not only subclass) as shown below in your toString() method:

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

One more point to note is that because, Undergraduate IS-A Member (inheritance), you are able to call getAddress() and getName() without creating an object for Member class i.e., in non-subclasses (no inheritance), you need an object for the Member class to invoke the public (instance) methods.

Vasu
  • 21,832
  • 11
  • 51
  • 67