如何将我的变量保持为私有并仍然获得所需的输出?
How can I keep my variables as private and still get the output desired?
我的作业要求我们将以下变量设为私有,如下所示:private String title;
私人双重价格; --------这些变量可以在文件Book.java.
中找到
我的代码无法检索这些变量,因为它们对文件 Textbook.java 不可见。当我 运行 TextbookApp.java 文件时,我怎样才能使这些变量保持私有,但仍能获得所需的输出。这是所需的输出:
这是我现在得到的输出:
Book.java
package assignment2;
public class Book {
private String title;
private double price;
public Book ()
{
title = "";
price = 0.0;
}
public Book (String t, double p)
{
title = t;
price = p;
}
public void setTitle(String t)
{
title = t;
}
public String getTitle()
{
return title;
}
public void setPrice(double p)
{
price = p;
}
public double getPrice()
{
return price;
}
public String toString()
{
return title + " " + price;
}
}
BookApp.java
package assignment2;
public class BookApp {
public static void main(String[] args) {
Book b1 = new Book();
b1.setTitle("John Doe");
b1.setPrice(8.5);
System.out.println(b1.toString());
Book b2 = new Book("Ann Smith", 9.7);
System.out.println(b2.toString());
}
}
Textbook.java
package assignment2;
public class Textbook extends Book{
private int courseID;
public Textbook()
{
title = "";
price = 0.0;
courseID = 0;
}
public Textbook (String t, double p, int ID)
{
title = t;
price = p;
courseID = ID;
}
public void setCourseID(int ID)
{
courseID = ID;
}
public int getCourseID()
{
return courseID;
}
public String toString()
{
return title + " " + price + " " + courseID;
}
}
TextbookApp.java
package assignment2;
public class TextBookApp extends Textbook {
public static void main(String[] args) {
Book b = new Book ("Ann Smith", 9.7);
System.out.println(b.toString());
Textbook tb1 = new Textbook();
tb1.setTitle("John Doe");
tb1.setPrice(8.5);
tb1.setCourseID(2050);
System.out.println(tb1.toString());
Textbook tb2 = new Textbook("Ann Smith", 9.7, 3090);
System.out.println(tb2.toString());
}
}
您可以通过从 Textbook
子类调用 Book
中适当的超类构造函数或方法来解决错误:
package assignment2;
public class Textbook extends Book{
private int courseID;
public Textbook()
{
courseID = 0;
}
public Textbook (String t, double p, int ID)
{
super(t, p);
courseID = ID;
}
public void setCourseID(int ID)
{
courseID = ID;
}
public int getCourseID()
{
return courseID;
}
public String toString()
{
return super.toString() + " " + courseID;
}
}
无参数构造函数Textbook()
会自动调用无参数构造函数Book()
,所以你不需要显式设置title
和price
Textbook()
.
我的作业要求我们将以下变量设为私有,如下所示:private String title; 私人双重价格; --------这些变量可以在文件Book.java.
中找到我的代码无法检索这些变量,因为它们对文件 Textbook.java 不可见。当我 运行 TextbookApp.java 文件时,我怎样才能使这些变量保持私有,但仍能获得所需的输出。这是所需的输出:
这是我现在得到的输出:
Book.java
package assignment2;
public class Book {
private String title;
private double price;
public Book ()
{
title = "";
price = 0.0;
}
public Book (String t, double p)
{
title = t;
price = p;
}
public void setTitle(String t)
{
title = t;
}
public String getTitle()
{
return title;
}
public void setPrice(double p)
{
price = p;
}
public double getPrice()
{
return price;
}
public String toString()
{
return title + " " + price;
}
}
BookApp.java
package assignment2;
public class BookApp {
public static void main(String[] args) {
Book b1 = new Book();
b1.setTitle("John Doe");
b1.setPrice(8.5);
System.out.println(b1.toString());
Book b2 = new Book("Ann Smith", 9.7);
System.out.println(b2.toString());
}
}
Textbook.java
package assignment2;
public class Textbook extends Book{
private int courseID;
public Textbook()
{
title = "";
price = 0.0;
courseID = 0;
}
public Textbook (String t, double p, int ID)
{
title = t;
price = p;
courseID = ID;
}
public void setCourseID(int ID)
{
courseID = ID;
}
public int getCourseID()
{
return courseID;
}
public String toString()
{
return title + " " + price + " " + courseID;
}
}
TextbookApp.java
package assignment2;
public class TextBookApp extends Textbook {
public static void main(String[] args) {
Book b = new Book ("Ann Smith", 9.7);
System.out.println(b.toString());
Textbook tb1 = new Textbook();
tb1.setTitle("John Doe");
tb1.setPrice(8.5);
tb1.setCourseID(2050);
System.out.println(tb1.toString());
Textbook tb2 = new Textbook("Ann Smith", 9.7, 3090);
System.out.println(tb2.toString());
}
}
您可以通过从 Textbook
子类调用 Book
中适当的超类构造函数或方法来解决错误:
package assignment2;
public class Textbook extends Book{
private int courseID;
public Textbook()
{
courseID = 0;
}
public Textbook (String t, double p, int ID)
{
super(t, p);
courseID = ID;
}
public void setCourseID(int ID)
{
courseID = ID;
}
public int getCourseID()
{
return courseID;
}
public String toString()
{
return super.toString() + " " + courseID;
}
}
无参数构造函数Textbook()
会自动调用无参数构造函数Book()
,所以你不需要显式设置title
和price
Textbook()
.