Java 将局部变量的值传递给字段
我是Java新手,我正在为一所学校做作业,但我似乎被困在了基础知识上 我的第一节课如下:Java 将局部变量的值传递给字段,java,class,object,Java,Class,Object,我是Java新手,我正在为一所学校做作业,但我似乎被困在了基础知识上 我的第一节课如下: public class Publisher { private String name; private String state; public Publisher(){} public Publisher(String name, String state) { super(); this.name = name;
public class Publisher {
private String name;
private String state;
public Publisher(){}
public Publisher(String name, String state) {
super();
this.name = name;
this.state = state;
}
public String getName() {
return name;
}
public String getState() {
return state;
}
}
在第一个类中,我有两个字段,其值通过构造函数更改,并且只能使用getter访问。我还有另一个构造函数,我用它在下一个类中创建对象
这是我的另一节课:
public class Book {
private String bookName;
private String language;
public static void main(String[] args) {
Publisher publisher = new Publisher();
String publisherName=publisher.getName();
}
public Book(String bookName, String language) {
super();
this.bookName = bookName;
this.language = language;
}
public String getBookName() {
return bookName;
}
public String getLanguage() {
return language;
}
}
在第二个类中,我基本上想做与第一个类相同的事情,不同的是我想使用Publisher类的对象名作为第三个字段。在我的新手思维中,我想解决这个问题,如代码所示,但我不知道是否可以以某种方式使用main方法的局部变量作为实例变量
我有一种感觉,我在某个地方犯了初学者的错误,因此欢迎任何建议或解决方案。当您在编写
Publisher=newpublisher()
在main方法中,您只是创建了Publisher
的一个实例,但是如果在Book
类中使用Publisher
作为实例变量(字段),则每次创建Book
实例时都可以使用它
例如,如果你的图书课是这样的
public class Book {
private String bookName;
private String language;
private Publisher publisher;
public Book(String bookName, String language, Publisher publisher) {
super();
this.bookName = bookName;
this.language = language;
this.publisher = publisher;
}
public String getBookName() {
return bookName;
}
public String getLanguage() {
return language;
}
public Publisher getPublisher() {
return publisher;
}
}
您可以在任何地方创建Book
类,并使用其中的字段“publisher”引用publisher
对象,如图所示
Book b = new Book();
b.publisher = new Publisher(); // or any method that returns 'Publisher' type object.
更新:即使您可以通过上述方式访问
publisher
参考,但这不是一个好的做法。您必须封装字段并使用setter和getter访问它们。(请参阅Publisher的构造函数和getter方法)当您编写Publisher=newpublisher()时
在main方法中,您只是创建了Publisher
的一个实例,但是如果在Book
类中使用Publisher
作为实例变量(字段),则每次创建Book
实例时都可以使用它
例如,如果你的图书课是这样的
public class Book {
private String bookName;
private String language;
private Publisher publisher;
public Book(String bookName, String language, Publisher publisher) {
super();
this.bookName = bookName;
this.language = language;
this.publisher = publisher;
}
public String getBookName() {
return bookName;
}
public String getLanguage() {
return language;
}
public Publisher getPublisher() {
return publisher;
}
}
您可以在任何地方创建Book
类,并使用其中的字段“publisher”引用publisher
对象,如图所示
Book b = new Book();
b.publisher = new Publisher(); // or any method that returns 'Publisher' type object.
更新:即使您可以通过上述方式访问
publisher
参考,但这不是一个好的做法。您必须封装字段并使用setter和getter访问它们。(请参阅Publisher的构造函数和getter方法)当您编写Publisher=newpublisher()时
在main方法中,您只是创建了Publisher
的一个实例,但是如果在Book
类中使用Publisher
作为实例变量(字段),则每次创建Book
实例时都可以使用它
例如,如果你的图书课是这样的
public class Book {
private String bookName;
private String language;
private Publisher publisher;
public Book(String bookName, String language, Publisher publisher) {
super();
this.bookName = bookName;
this.language = language;
this.publisher = publisher;
}
public String getBookName() {
return bookName;
}
public String getLanguage() {
return language;
}
public Publisher getPublisher() {
return publisher;
}
}
您可以在任何地方创建Book
类,并使用其中的字段“publisher”引用publisher
对象,如图所示
Book b = new Book();
b.publisher = new Publisher(); // or any method that returns 'Publisher' type object.
更新:即使您可以通过上述方式访问
publisher
参考,但这不是一个好的做法。您必须封装字段并使用setter和getter访问它们。(请参阅Publisher的构造函数和getter方法)当您编写Publisher=newpublisher()时
在main方法中,您只是创建了Publisher
的一个实例,但是如果在Book
类中使用Publisher
作为实例变量(字段),则每次创建Book
实例时都可以使用它
例如,如果你的图书课是这样的
public class Book {
private String bookName;
private String language;
private Publisher publisher;
public Book(String bookName, String language, Publisher publisher) {
super();
this.bookName = bookName;
this.language = language;
this.publisher = publisher;
}
public String getBookName() {
return bookName;
}
public String getLanguage() {
return language;
}
public Publisher getPublisher() {
return publisher;
}
}
您可以在任何地方创建Book
类,并使用其中的字段“publisher”引用publisher
对象,如图所示
Book b = new Book();
b.publisher = new Publisher(); // or any method that returns 'Publisher' type object.
更新:即使您可以通过上述方式访问
publisher
参考,但这不是一个好的做法。您必须封装字段并使用setter和getter访问它们。(请参阅Publisher的构造函数和getter方法)您可以轻松地将另一个字段添加到图书
,该字段存储对出版商的引用-与图书名
和语言
的方式完全相同
此外,我建议您将main
方法移动到一个新类中,而不使用其他方法,以使其更简单
public class Book {
private String bookName;
private String language;
private Publisher publisher; // <--- NEW
public Book(String bookName, String language, Publisher publisher) { // <--- NEW PARAMETER
super();
this.bookName = bookName;
this.language = language;
this.publisher = publisher; // <--- NEW
}
// main removed (add it to another class)
public String getBookName() {
return bookName;
}
public String getLanguage() {
return language;
}
// NEW METHOD
public Publisher getPublisher() {
return publisher;
}
}
公共课堂教材{
私有字符串书名;
私有字符串语言;
private Publisher Publisher;//您可以轻松地将另一个字段添加到Book
,该字段存储对出版商的引用-与bookName
和language
的方式完全相同
此外,我建议您将main
方法移动到一个新类中,而不使用其他方法,以使其更简单
public class Book {
private String bookName;
private String language;
private Publisher publisher; // <--- NEW
public Book(String bookName, String language, Publisher publisher) { // <--- NEW PARAMETER
super();
this.bookName = bookName;
this.language = language;
this.publisher = publisher; // <--- NEW
}
// main removed (add it to another class)
public String getBookName() {
return bookName;
}
public String getLanguage() {
return language;
}
// NEW METHOD
public Publisher getPublisher() {
return publisher;
}
}
公共课堂教材{
私有字符串书名;
私有字符串语言;
private Publisher Publisher;//您可以轻松地将另一个字段添加到Book
,该字段存储对出版商的引用-与bookName
和language
的方式完全相同
此外,我建议您将main
方法移动到一个新类中,而不使用其他方法,以使其更简单
public class Book {
private String bookName;
private String language;
private Publisher publisher; // <--- NEW
public Book(String bookName, String language, Publisher publisher) { // <--- NEW PARAMETER
super();
this.bookName = bookName;
this.language = language;
this.publisher = publisher; // <--- NEW
}
// main removed (add it to another class)
public String getBookName() {
return bookName;
}
public String getLanguage() {
return language;
}
// NEW METHOD
public Publisher getPublisher() {
return publisher;
}
}
公共课堂教材{
私有字符串书名;
私有字符串语言;
private Publisher Publisher;//您可以轻松地将另一个字段添加到Book
,该字段存储对出版商的引用-与bookName
和language
的方式完全相同
此外,我建议您将main
方法移动到一个新类中,而不使用其他方法,以使其更简单
public class Book {
private String bookName;
private String language;
private Publisher publisher; // <--- NEW
public Book(String bookName, String language, Publisher publisher) { // <--- NEW PARAMETER
super();
this.bookName = bookName;
this.language = language;
this.publisher = publisher; // <--- NEW
}
// main removed (add it to another class)
public String getBookName() {
return bookName;
}
public String getLanguage() {
return language;
}
// NEW METHOD
public Publisher getPublisher() {
return publisher;
}
}
公共课堂教材{
私有字符串书名;
私有字符串语言;
private Publisher;//如果您想要第三个字段,您应该首先创建它。然后您应该在您创建的每个对象中执行赋值(例如在构造函数中),否则它将为null
public class Book {
private final String bookName;
private final String language;
private final Publisher publisher; //third field
public Book(String bookName, String language, Publisher publisher) {
super();
this.bookName = bookName;
this.language = language;
this.publisher = publisher; //assignment of new field
}
public String getBookName() {
return bookName;
}
public String getLanguage() {
return language;
}
public String getPublisher() { //new getter
return publisher;
}
}
事实上,在你的代码中,