java - 在Java中更改实例的属性时如何在其他类中使用它
问题描述
这次我开始学习Java。
我很开心学习它,但有些部分我不明白,所以我问。
下面是我写的代码。
public class Info {
String name;
String company;
Info(String n, String c) {
name = n;
company = c;
}
public void setName(String name) {
this.name = name;
}
public void setCompany(String company) {
this.company = company;
}
public String toString() {
return this.name + ". working at " + this.company;
}
}
public class Info_C {
String position;
String dept;
String name;
String company;
Info_C(Info i, String p, String d) {
name = i.name;
company = i.company;
position = p;
dept = d;
}
public void setInfo(Info i) {
this.name = i.name;
this.company = i.company;
}
public void setPosition(String p) {
this.position = p;
}
public String toString() {
return this.name + ". Working as a " +this.position + " in " + this.company + "'s " + this.dept;
}
public static void main(String[] args) {
var Pf_B = new Info("Bob","Apple");
var Pf_J = new Info("James","Google");
var TM = new Info_C(Pf_B, "Team Manager","Sales Team1");
var AM = new Info_C(Pf_B, "Assistane Manager","HR Team");
var RE = new Info_C(Pf_B, "Research Engineer","R&D Team");
System.out.println(Pf_B); // Bob. working at Apple
System.out.println(Pf_J); // James. working at Google
System.out.println(TM); // Bob. Working as a Team Manager in Apple's Sales Team1
System.out.println(AM); // Bob. Working as a Assistane Manager in Apple's HR Team
System.out.println(RE); // Bob. Working as a Research Engineer in Apple's R&D Team
Pf_B.setName("Eric");
Pf_B.setCompany("Samsung");
AM.setPosition("Team Manager");
RE.setInfo(Pf_J);
System.out.println("=========================Changed==========================");
System.out.println(Pf_B); // Eric. working at Samsung
System.out.println(TM); // Bob. Working as a Team Manager in Apple's Sales Team1
// Why Bob. Apple? Thought Eric. Samsung
System.out.println(AM); // Bob. Working as a Team Manager in Apple's HR Team
// Same here
System.out.println(RE); // James. Working as a Research Engineer in Google's R&D Team
}
}
在修改Info类的实例属性时,有什么办法可以让它应用到Info_C的实例属性上呢?
尝试了很多并努力搜索,但失败了。也许是因为我的英语不好。
由于我的好奇,我无法继续下一章。任何帮助,将不胜感激。
+) 我什至不确定这个标题是否适合我,但如果你让我知道它是否需要更正,我将不胜感激。
解决方案
您的问题是您正在更改对象的名称和公司Info
,但这不会更改Info_C
对象中的所述值。为了解决这个问题,我会将您的代码更改为 -
public class Info {
String name;
String company;
Info(String n, String c) {
name = n;
company = c;
}
public void setName(String name) {
this.name = name;
}
public void setCompany(String company) {
this.company = company;
}
public String toString() {
return this.name + ". working at " + this.company;
}
}
public class Info_C {
String position;
String dept;
Info info;
Info_C(Info i, String p, String d) {
position = p;
dept = d;
info = i;
}
public void setInfo(Info i) {
info = i;
}
public void setPosition(String p) {
this.position = p;
}
public String toString() {
return info.name + ". Working as a " +this.position + " in " + info.company + "'s " + this.dept;
}
public static void main(String[] args) {
var Pf_B = new Info("Bob","Apple");
var Pf_J = new Info("James","Google");
var TM = new Info_C(Pf_B, "Team Manager","Sales Team1");
var AM = new Info_C(Pf_B, "Assistane Manager","HR Team");
var RE = new Info_C(Pf_B, "Research Engineer","R&D Team");
System.out.println(Pf_B); // Bob. working at Apple
System.out.println(Pf_J); // James. working at Google
System.out.println(TM); // Bob. Working as a Team Manager in Apple's Sales Team1
System.out.println(AM); // Bob. Working as a Assistane Manager in Apple's HR Team
System.out.println(RE); // Bob. Working as a Research Engineer in Apple's R&D Team
Pf_B.setName("Eric");
Pf_B.setCompany("Samsung");
AM.setPosition("Team Manager");
RE.setInfo(Pf_J);
System.out.println("=========================Changed==========================");
System.out.println(Pf_B); // Eric. working at Samsung
System.out.println(TM); // Bob. Working as a Team Manager in Apple's Sales Team1
// Why Bob. Apple? Thought Eric. Samsung
System.out.println(AM); // Bob. Working as a Team Manager in Apple's HR Team
// Same here
System.out.println(RE); // James. Working as a Research Engineer in Google's R&D Team
}
}
请注意,不将类的成员变量设置为私有并不理想,并且只能使用 getter 和 setter 来访问它们。
推荐阅读
- mysql - mysql 使用从数据库中读取的列别名
- python-3.x - 使用 Python 和 O365 向多个收件人发送电子邮件
- php - 如何使用 PHP 存储和检索嵌入在 MySQL 数据库中的 YouTube?
- r - dplyr 中的奇怪内存使用使用 paste 变异
- spring-boot - Spring Boot Actuator Trace HTTP POST 请求参数为空
- oracle - 导入和替换构建状态为“仅运行应用程序”的 APEX 应用程序
- angular - 防止“提交”内联编辑 AG-Grid
- jestjs - subscribe() 中的 expect() 失败不会将测试标记为无效
- ios - 在 Cell 的 UIStackView 中隐藏 subView 时动画很奇怪
- java - 我的 method.add(int) 没有将用户输入添加到我的数组中