java中类之间的通信
我是java新手,有一个关于类间通信的问题。假设我得到了下面这个例子java中类之间的通信,java,class,Java,Class,我是java新手,有一个关于类间通信的问题。假设我得到了下面这个例子 我得到了一个字符串(print),我将它发送给MyClass1中的setter方法 在MyClass1中,我更改了getterMethod和ad“1”中的字符串 我在main类中接收被操纵的字符串,并将其发送给MyClass2中的setter方法 在MyClass2中,我再次更改字符串并添加“and 2”,因此完整字符串为“print 1 and 2” 然后,我通过MyClass2中的gettermethod在main类中接收
public class Testing1 {
public static void main(String[] args) {
String print = "Hello world";
MyClass1 m1 = new MyClass1();
MyClass2 m2 = new MyClass2();
m1.setPrint(print);
m2.setPrint(m1.getPrint());
System.out.println("m2 = " + m2.getClass2());
}
}
public class MyClass1 {
private String print = "";
public MyClass1() {
}
public void setPrint(String print) {
this.print = print;
}
public String getPrint() {
String print2 = print+" " + 1;
return print2;
}
}
public class MyClass2 {
private String print = "";
public MyClass2() {
}
public void setPrint(String print) {
this.print = print;
}
public String getClass2() {
String print2 = this.print + " and 2";
return print2;
}
}
class MyClass1{
static String modifyString(String str){
if(str == null){
return null;
}else{
return (str + " 1");
}
}
}
MyClass1:
public class Testing1 {
public static void main(String[] args) {
String print = "Hello world";
MyClass1 m1 = new MyClass1();
MyClass2 m2 = new MyClass2();
m1.setPrint(print);
m2.setPrint(m1.getPrint());
System.out.println("m2 = " + m2.getClass2());
}
}
public class MyClass1 {
private String print = "";
public MyClass1() {
}
public void setPrint(String print) {
this.print = print;
}
public String getPrint() {
String print2 = print+" " + 1;
return print2;
}
}
public class MyClass2 {
private String print = "";
public MyClass2() {
}
public void setPrint(String print) {
this.print = print;
}
public String getClass2() {
String print2 = this.print + " and 2";
return print2;
}
}
class MyClass1{
static String modifyString(String str){
if(str == null){
return null;
}else{
return (str + " 1");
}
}
}
MyClass2:
public class Testing1 {
public static void main(String[] args) {
String print = "Hello world";
MyClass1 m1 = new MyClass1();
MyClass2 m2 = new MyClass2();
m1.setPrint(print);
m2.setPrint(m1.getPrint());
System.out.println("m2 = " + m2.getClass2());
}
}
public class MyClass1 {
private String print = "";
public MyClass1() {
}
public void setPrint(String print) {
this.print = print;
}
public String getPrint() {
String print2 = print+" " + 1;
return print2;
}
}
public class MyClass2 {
private String print = "";
public MyClass2() {
}
public void setPrint(String print) {
this.print = print;
}
public String getClass2() {
String print2 = this.print + " and 2";
return print2;
}
}
class MyClass1{
static String modifyString(String str){
if(str == null){
return null;
}else{
return (str + " 1");
}
}
}
好的OO设计的全部要点是:某个对象A应该能够访问它需要执行其工作的其他对象 意义;通常情况下,您的类看起来像:
public class Foo {
private final Bar bar;
...
意思是:任何Foo对象都有一个字段栏,其中包含一个bar对象;这个Foo对象可以用来做Foo必须做的事情
因此,如果您想让MyClass1处理MyClass2,那么一个类应该有一个该类型的字段;例如,该字段是使用构造函数初始化的
但是,另一方面:好的OO设计的另一个想法是类具有特定的责任。你想让你的课程尽可能的“小”;意思:你仔细考虑你想在你的类中拥有哪些字段。换言之:您尝试创建小而有用的“构建块”。然后,在更高的层次上,您使用小的构建块来组合一些“更大”的东西。从这个意义上说,您当前的实现(main创建了几个对象;并分别调用它们以实现某个目标)实际上是一种良好的方法。你看,你最不想得到的是:几个大类,负责“一切”
最后:我知道我的答案是“相当一般和抽象”;但您的示例代码也是如此。意思:为了学习如何创造真正的设计;最好的办法是解决实际问题。你看,你发布的代码没有做一些“有用”的事情;因此,它的结构并不重要。在某种程度上,当手头有更具体的输入/任务时,总是更容易给出具体的建议。在Java中,getter/Setter模型通常用于Java bean中,它们充当实际bean属性的包装器。Setter通常验证数据并存储值,而getter通常按原样返回属性值 即使在一般编程中,最好提供setter而不是直接字段访问,这样,如果将来出现了某些问题,并且需要对该字段进行一些更改,那么就可以在setter-getter中轻松完成,而不会影响使用这些API的代码 对于您的示例,可以像这样使用单个API,而不是getter和setter。如果该值不应存储在实例级别,则可以将此API设置为静态 示例:
public class Testing1 {
public static void main(String[] args) {
String print = "Hello world";
MyClass1 m1 = new MyClass1();
MyClass2 m2 = new MyClass2();
m1.setPrint(print);
m2.setPrint(m1.getPrint());
System.out.println("m2 = " + m2.getClass2());
}
}
public class MyClass1 {
private String print = "";
public MyClass1() {
}
public void setPrint(String print) {
this.print = print;
}
public String getPrint() {
String print2 = print+" " + 1;
return print2;
}
}
public class MyClass2 {
private String print = "";
public MyClass2() {
}
public void setPrint(String print) {
this.print = print;
}
public String getClass2() {
String print2 = this.print + " and 2";
return print2;
}
}
class MyClass1{
static String modifyString(String str){
if(str == null){
return null;
}else{
return (str + " 1");
}
}
}
取决于MyClass1和MyClass2是什么:)在java中,类类似于事物的模板,对象是该模板的实例。例如,如果MyClass1是Home,MyClass2是Dog,那么可以将Dog作为私有变量放在类Home中,等等。只要开始考虑像真实对象这样的类:)