如果想要调用某个已经实例化的对象,那么只有把那个对象的引用传到你当前对象才可能,不然没办法,或者说你只需要那个类的方法,那你在代码里面创建一个新对象调用就好了。
你报错是因为你在对象本身创建一个自己的对象,实际上进入了死循环了,你试想一下,你每次创建TestDiaoYongLingWaiLeiDuiXiang2对象的时候,这个对象又要通过new 创建一个TestDiaoYongLingWaiLeiDuiXiang2对象,然后这个对象创建的时候又去new 一直没有穷尽,所以就把内存撑爆了。
static修饰这个对象就是把对象的实例化提前了,也就是说这个对象会在jvm运行时就先加载到内存,而不是你new的时候,所有new出来的对象的这个属性都指向这一个地方,所以你无论用new还是类名都可以访问到他,而且两种方式访问到的是同一个对象。
java一个类调用另一个类的数组元素,首先需要创建一个被调用类的对象,然后利用对象调用数组元素。代码如下:
public Class C1{
C2 c=new C2();//创建c2的对象
carray[index];//这里是调用素组的元素
}
Class C2{
Object[] array=new Object[5];
}Java中当然可以在一个类中调用另一个类的静态公有方法。
首先公有方法,其他类是可以访问的。
调用静态方法的语法是,
类名方法名(参数)
所以,比如另一个类叫OtherClass,它的静态公有方法是publicMethodA(),假设它还有返回值,是int类型,
那么在自己的类里调用的方式就是:
int result = OtherClasspublicMethodA();
另外,调用非静态方法(也叫成员方法),比如方法叫int publicMethodB(),就必须先创建这个对象再调用其方法,例如:
int result2 = new OtherClass()publicMethodB();
这里就用到了对象的一对一关系,你可以将对方的类作为自己类的一个属性,写在自己的属性里面,给你代码,你看看就知道
package homework4;
/对象与对象之间的一对一关系
简要的说就是讲一个类作为另一个类的一个属性(注意,在这里作为属性时,不能是私有的,)
/
public class onetoone {
public static void main(String[] args) {
// TODO Auto-generated method stub
Husband h=new Husband();
Wife w=new Wife();
hsetName("花花");
hsetSex('男');
wsetName("小红");
wsetAge(23);
hwife=w;//将妻子类中的属性值赋予hwife
whusband=h;//将丈夫类中的属性赋予whusband
Systemoutprintln("我是"+hgetName()+",我的妻子是"+hwifegetName()+",她今年"+hwifegetAge()+"岁了。");
}
}
//丈夫类
class Husband{
private char sex;
private String name;
public Wife wife;
public void setSex(char sex){
thissex=sex;
}
public int getSex(){
return sex;
}
public void setName(String name){
thisname=name;
}
public String getName(){
return name;
}
public Husband(){ }
//public husband(char sex,String name){
//thisname=name;
//thissex=sex;
//}
}
//妻子类
class Wife{
private int age;
private String name;
public Husband husband;
public void setAge(int age){
thisage=age;
}
public int getAge(){
return age;
}
public void setName(String name){
thisname=name;
}
public String getName(){
return name;
}
public Wife(){}
//public wife(int age,String name){
//thisage=age;
//thisname=name;
//}
}
输出结果:
想要引用另一个包中的类方法,你需要导你要用到那个类所在的包。比方说,你在AJava中应用到B包下的C类,所以你在文件头的书写格式是 import BC;
当然最快捷的方式是,你可以在你用到该方法后,或则用到某个包里面的类创建一个新对象的时候,这时候系统回报错,你可以按下键盘Ctrl + Shift + O 快捷键,这样系统会自动帮你导入包。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)