我在有main() 的Coffee class类文件里定义了如下实例:appOrder
public class Coffee{
public static void main(String[] args) {
Order appOrder = new Order();
}然后呢,我想在别的class类文件(rootMenu)里访问这个实例的方法,
public class rootMenu {
public void Mainmenu(){
.......
appOrder.startOrder(); //startOrder() is a method of appOrder
.......
}
}
除了用继承之外,还有别的方法吗?
有这个问题的原因是,我之前写的小程序基本上都是两个文件,一个实现一个函数,甚至都是在一个文件里,这样根本不会有上述问题.
但当要求变成符合OO原则, 数据封装等要求后, 问题就出来了.抽象一点说就是: 在class A里创建了一个constractor构造器 B的引用C, 然后呢,我想在class D里调用这个C,使用C的方法.对C的数据进行操作. 我不知道该怎么做了... class A和Class D分属两个不同的文件.实际上constractor构造器 也是单独的一个文件(Class B)大多数书籍上的Java例子都是为了说明具体问题而写,不会有多个文件相互访问数据之类的问题...恳请赐教
public class Coffee{
public static void main(String[] args) {
Order appOrder = new Order();
}然后呢,我想在别的class类文件(rootMenu)里访问这个实例的方法,
public class rootMenu {
public void Mainmenu(){
.......
appOrder.startOrder(); //startOrder() is a method of appOrder
.......
}
}
除了用继承之外,还有别的方法吗?
有这个问题的原因是,我之前写的小程序基本上都是两个文件,一个实现一个函数,甚至都是在一个文件里,这样根本不会有上述问题.
但当要求变成符合OO原则, 数据封装等要求后, 问题就出来了.抽象一点说就是: 在class A里创建了一个constractor构造器 B的引用C, 然后呢,我想在class D里调用这个C,使用C的方法.对C的数据进行操作. 我不知道该怎么做了... class A和Class D分属两个不同的文件.实际上constractor构造器 也是单独的一个文件(Class B)大多数书籍上的Java例子都是为了说明具体问题而写,不会有多个文件相互访问数据之类的问题...恳请赐教
Order appOrder = new Order();
public static void main(String[] args) {
rootMenu rm = new rootMenu(appOrder);
}public class rootMenu {
Order appOrder;
public void Mainmenu(Order appOrder){
this.appOrder = appOrder;
appOrder.startOrder(); //startOrder() is a method of appOrder
.......
}
}不太明白LZ的需求,不知道这是不是LZ想要的
appOrder?public class rootMenu {
Order appOrder;
上面的Order appOrder; 实际上指的还是下面这个class里的appOrder吗? 我指下面的appOrder和上面的appOrder是不是实际上是一个对象?
public class Coffee{
Order appOrder = new Order();
B c ;
public A() {
c = new B();
new C(c); //通过构造方法传值到Class C.
}
}
package test;public class B {
public static void show() {
System.out.println("class B show API.");
}
}
package test;public class C {
static B b;
public C(B c) {
this.b = c; //通过A中构造方法传值得到B的实例!
}
public static void main(String[] args) {
b.show(); //可以调用B的show();
}
}这样代码可以通过在构造方法中传值,把对象传到C,可以不通过继承!!!这个只是其中一种..楼下再补充吧!
B c ;
public A() {
c = new B();
new C(c); //通过构造方法传值到Class C.
}
}
package test; public class B {
public static void show() {
System.out.println( "class B show API. ");
}
}
package test; public class C {
static B b;
public C(B c) {
this.b = c; //通过A中构造方法传值得到B的实例!
} public static void main(String[] args) {
b.show(); //可以调用B的show();
}
}
B c ;
public A() {
c = new B();
new C(c); //通过构造方法传值到Class C.
}
}
package test;public class B {
public static void show() {
System.out.println( "class B show API. ");
}
}package test;public class C {
static B b;
public C(B c) {
this.b = c; //通过A中构造方法传值得到B的实例!
}public static void main(String[] args) {
b.show(); //可以调用B的show();
}
}谢谢楼上的,我整理了一下您的回帖.
为什么我不能在hello class 里用c.display()? 如果想这么做,该怎么办? 不用继承和静态方法.
test class里的display方法调用的是hello主方法里构建的a,b对象.public class hi {
private String n;
public hi(String n){
this.n=n;
}
public String getString(){
return this.n;
}
}
public class hello { public static void main(String[] args) {
hi a= new hi("hello");
hi b = new hi("world");
test c = new test();
c.display();
}
}public class test { public void display(){
System.out.println(a.getString());
System.out.println(b.getString());
}
}