我有一个名为out1
的嵌套类的以下代码 class sample{
public int a=5;
class out1{
void main1(){
System.out.println("this is out1");
}
}
void call(){
//access main1() method on class out1
}
}
public class innerclass{
public static void main(String args[]){
sample ob=new sample();
System.out.println(ob.a);// access field a on class sample
//access call() on class sample
}
}
有没有人知道如何访问内部类out1并且可以在不使用类示例的call()方法的情况下访问此内部类?
答案 0 :(得分:1)
您可以将内部类out1对象创建为
ob.new out1();
答案 1 :(得分:0)
这是我如何访问内部类的方法。我在类示例中创建了一个get方法,它返回类out1:
的对象public class innerclass {
public static void main(String args[]) {
sample ob = new sample();
ob.getOut1().call(); // calling the call() method in innerclass out1
}
}
class sample {
public int a = 5;
out1 getOut1() {
return new out1();
}
class out1 {
public void main1() {
System.out.println("this is out1");
}
public void call() {
main1();
}
}
}
尝试使用大写字母创建类,并使用camelcase,例如:Sample,InnerClass,Out1。
答案 2 :(得分:0)
内部类可以是静态的 如果没有将内部类定义为静态,则必须创建它的一个实例(一个对象)才能使用它。
以下是静态和成员(非静态)类的示例用例:
public class Tester {
public static void main() {
Outer outerTest = new Outer();
outerTest.test();
outerTest.publicInnerInstance.sayHello();
Outer.InnerStaticClass.sayHello();
}
}
class Outer{
class InnerMemberClass{
public void sayHello(){
System.out.println("Hello");
System.out.println("I'm an instance of 'InnerMemberClass'.");
}
}
static class InnerStaticClass{
public static void sayHello(){
System.out.println("Hello.");
System.out.println("I'm a static class 'InnerStaticClass'.");
}
}
public InnerMemberClass publicInnerInstance;
//'Outer' constructor
public void Outer(){
publicInnerInstance = new InnerMemberClass();
}
public void test(){
InnerStaticClass.sayHello();
InnerMemberClass instance = new InnerMemberClass();
instance.sayHello();
}
}
答案 3 :(得分:0)
你可以通过new的inner.new来访问内部类。 要从外部类调用内部类方法,您需要创建内部类的对象。否则,您必须使内部类和方法静态。
class Sample{
public int a=5;
class Out1{
void main1(){
System.out.println("this is out1");
}
}
void call(){
new Out1().main1();
}
}
public class Innerclass{
public static void main(String args[]){
Sample ob=new Sample();
System.out.println(ob.a);// access field a on class sample
Sample.Out1 out1=new Sample().new Out1();
Out1.main1();
ob.call();
//access call() on class sample
}
}
类名应按惯例以大写字母开头。