不用纠结这个,在哪里都可以创建实例对象,只要你这个方法里用得上这个实例对象就可以创建,这有什么好纠结的呢?一句话概括就是:在任何有需要的地方都可以创建。
任何地方都可以创建变量,但是要注意作用域。主函数属于静态函数,不能调用其外的非静态变量,静态函数调用只能从参数、外部静态变量、内部定义几种方法。
些封装,这个是没有任何问题的
你错在没有实例自身,你虽然实例化了class Inner,但你并没有实例化class Outer
所以Outer的私有变量i事实上是不存在的,这个时候你调用输出函数打印i自然是不行的
其实不用这么复杂,简化一点看你马上就明白了
-----------------------------------------------------------------------------------------------------------
public class Outer { //这个就是ok的
public int i = 10;
public static void makeInner(){
Outer out = new Outer();
System.out.print(out.i);
}
}
public class Outer { //这个就是错误的,因为没实例化本身,所以i不存在
public int i = 10;
public static void makeInner(){
System.out.print(i);
}
}
实例方法?我没听过有这个方法,是构造方法还是自定义方法,能拿个可以表达你意思的代码才能知道你是什么情况的问题。
是你需要这个对象的时候才创建该对象的
当然如果是静态的类是不用创建的 因为它已经被创建好了