勤奋学习的kid
2015-09-23 19:06
顺便看下这个代码中的调用方法哪里不对?
//外部类
public class HelloWorld {
// 外部类中的静态变量score
private static int score = 84;
// 创建静态内部类
public static class SInner {
// 内部类中的变量score
int score = 91;
public void show() {
System.out.println("访问外部类中的score:" +HelloWorld.score );
System.out.println("访问内部类中的score:" + score);
}
}
// 测试静态内部类
public static void main(String[] args) {
// 直接创建内部类的对象
HelloWorld hello=new HelloWorld();
SInner si=hello.new SInner();
// 调用show方法
si.show();
}
}
你可以把静态内部类、成员内部类 与 静态变量、成员变量类比来看。
静态的东西是属于 一个类(或者说这个类所有对象共有的),成员的东西是属于一个具体对象的,当你每实例化了一个对象,这些对象都会拥有各自的成员变量,非静态方法。当然静态内部类,成员内部类也与此类似。
public class HelloWorld {
// 外部类中的静态变量score
private static int score = 84;
// 创建静态内部类
public static class SInner {
// 内部类中的变量score
int score = 91;
public void show() {
System.out.println("访问外部类中的score:" +HelloWorld.score );
System.out.println("访问内部类中的score:" + score);
}
}
// 测试静态内部类
public static void main(String[] args) {
// 直接创建内部类的对象
HelloWorld hello=new HelloWorld();
SInner si=hello.new SInner();
// 调用show方法
si.show();
}
}
我认为画横线的部分写的有些问题(当然你这样写也不会报错),静态内部类(想一下静态方法)的实例用外部类类名去调用就可以了,像是这样:
new HelloWorld. SInner();至于为什么不是HelloWorld.new SInner()自己好好体会一下吧,new+一个类才是实例化一个对象的表达式。
HelloWorld hello=new HelloWorld();
SInner si=hello.new SInner();
// 调用show方法
si.show();
改为HelloWorld.SInner si=new HelloWorld.SInner();
si.show();更合适
Java入门第二季 升级版
530715 学习 · 6091 问题
相似问题
回答 4