//由于时间关系,你把张孝祥里面关于内部类的内容看一看,我给你的代码改了,你参考参考
public class InnerClass {
public static void main(String[] args){
T a=new InnerClass()new T();
}
class T{
}
}
//你给的别人的代码在main方法里建立的对象不是内部类的对象,而是其本身所在的类的对象
//而go方法是一个成员方法,不带有static的,所以调用其本身所在类的内部类完全可以
//你最后补充的完全可以,只是main方法里的内部类有效范围小
//你可以这样运行一下
public class InnerClass {
public static void main(String[] args){
class T{
}
T a=new T();
Systemoutprintln(a);
}
}
你这里面有两个错:
1、Leis内部类是非静态类,不能在静态方法里初始化,即第三行Leis x=new Leis();报错,可以把Leis类改成静态类,即
public static class Leis{
}
2、Leis()是Leis类的构造函数,不能在第4行xLeis()显示调用
一句话:静态方法里不能访问非静态内部类。但你可以在外部类的一个成员方法里访问非静态内部类,然后你再在静态方法里初始化外部类,通过外部类来访问非静态内部类。
初学者这样写就不太好了
Student 这样定义就是一个内部类了
那你必须要创建外部类TestOop,才能访问它的内部类
TestOop t = new TestOop();
Student s1 = tnew Student();//这样获取内部类的实例
建议新建一个java文件,把这个Student复制出去,
或者放到public class TestOop{} 这个类(大括号)的外面 但是要去掉public
interface Inter {
void show();
}
class Outer {
class Inner implements Inter {
@Override
public void show() {
Systemoutprintln("Hello World");
}
}
static Inter method() {
return new Outer()new Inner();
}
}
public class OuterDemo {
public static void main(String[] args) {
Outermethod()show();
}
}
public class TestInnerClass {
private String str;
private InnerClass innerClass;
public TestInnerClass() {
str = "外部类字符串";
innerClass = new InnerClass();
}
class InnerClass {
private String str;
public InnerClass() {
str = "内部类字符串";
}
public void printInnerStr(){
Systemoutprintln("输出内部类str>>>"+str);
}
public void printOuterStr(){
Systemoutprintln("输出外部类str>>>"+TestInnerClassthisstr);
}
}
public InnerClass getInnerClass() {
return innerClass;
}
public static void main(String[] args) {
TestInnerClass outerClass = new TestInnerClass();
outerClassgetInnerClass()printInnerStr();//获取内部类实例对象并调用输出方法
outerClassgetInnerClass()printOuterStr();
}
}
以上就是关于java 内部类全部的内容,包括:java 内部类、java外部类怎样调用内部类方法、Java报错 不懂 求解释等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)