我原贴说的不太清楚,我重写个小例子. 以下每个class 都是一个单独的文件:
为什么我不能在hello class 里用c.display()? 如果想这么做,该怎么办? 不用继承和静态方法.
test class里的display方法调用的是hello主方法里构建的a,b对象.
有这个问题的原因是,我之前写的小程序基本上都是两个文件,一个实现一个函数,甚至所有的class都是在一个文件里,这样根本不会有这个问题.
但当要求变成符合OO原则, 数据封装等要求后, 问题就出来了. 不在同一个文件了. 砸办?
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());
}}
为什么我不能在hello class 里用c.display()? 如果想这么做,该怎么办? 不用继承和静态方法.
test class里的display方法调用的是hello主方法里构建的a,b对象.
有这个问题的原因是,我之前写的小程序基本上都是两个文件,一个实现一个函数,甚至所有的class都是在一个文件里,这样根本不会有这个问题.
但当要求变成符合OO原则, 数据封装等要求后, 问题就出来了. 不在同一个文件了. 砸办?
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());
}}
解决方案 »
- java画图(Graphics)的问题
- if问题
- 线程和类(内部类和外部类)的一些问题?/
- 我是个java初学者不知道看什么书比较好所以希望大家推荐几本好书!
- 现在有一串目录c:\root\a;c:\root\b;c:\root\c我想把c:\root都去掉,只剩下后面的部分,应该如何做?
- 在jbuilder中可以运行的程序在dos下就不行
- 帮忙下个CSDN上的资源。。
- k=(k>0)?(p++, k=0):k+1;
- 关于如何关闭连接的问题!!!急!!!
- 各位大虾,听说有一个java2exe的软件,哪里可以下载呀?
- 写单例的时候不小心写出一个bug,希望大家引以为戒
- GIS 对算法的要求高吗?
class hi{}
class test{}
public class hello{}
这样,只有一个public的
其次,你Test类里的变量a、b是从哪里来的?
你在test类里定义的变量不能直接用在另一个类里,类具有封装性
一开始好像有点懂~但是现在你越说我越不懂你是要怎么样了~
OO设计原则难道不是这样的么?
package com.tb.test;/**
* @author king
* @date 2010-4-23
* @since JDK1.6
*/
public class User {
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}
package com.tb.test;/**
* @author king
* @date 2010-4-23
* @since JDK1.6
*/
public class Check { public String checkName(String str1) {
return "要求检查的name:"+str1;
}
}
package com.tb.test;public class main { public static void main(String[] args) {
Check dao = new Check();
User user = new User();
user.setName("ABC");
System.out.println(dao.checkName(user.getName()));
}
}
你把test类改成下面这样看看 不知道是不是你想要的public class test {
//既然需要hi的对象a,b那就通过参数传过来吧
public void display(hi a,hi b){
System.out.println(a.getString());
System.out.println(b.getString());
}}
System.out.println(a.getString());
System.out.println(b.getString());
}你这个里面,a.b分别从哪里来啊?
你定义的类test没有定义a,b,所以编译期间就是错误的
还有就是:如果你这个类都放在同一包下,那只有一个是public 的,并且这个文件的名字要和这个public类的名字一样·