提两个小问题。

时间:2022-02-25 13:59:38
问题1:外部类能不能访问内部类?(域也好方法也好,通过内部类对象来访问不算)
问题2:一般在构造器前用private修饰目的是什么?我实在想不出要让构造器private的理由,请教下大家。

6 个解决方案

#1


问题2:不能被其他类或用他的类 实例化!
具体你可以去看看sington的实现

#2


1、对于内部类来说,就像一个类的属性一样,对于类本身而言,是可以访问的,而对于其他的类来访问,必须通过这个类去访问他的内部类

2、一个构造器默认的方法就是public,当我们在构造器前加上private之后,我们就不能在外部来对其进行实例化了,如果我们需要访问它,
则必须通过内部方法来访问它,这个一般在很多单例模式中可以看到,它的作用就是不能让别人直接访问它,而必须通过某个方法来访问

#3


问题1:可以
问题2:单例模式时就可以用

#4


第二个问题我懂了,但是第一个问题,怎么访问啊?

public class TestInner {

class Inner{
public int a = 10;
public int get(){
return a;
}
}
public static void main(String[] args){
TestInner testInner = new TestInner();
                //这段代码,里的内部类能在不创建内部类对象的情况下被访问?
}
}

#5


引用 4 楼 llm0528 的回复:
第二个问题我懂了,但是第一个问题,怎么访问啊?

Java codepublicclassTestInner {classInner{publicinta=10;publicintget(){returna;
        }
    }publicstaticvoidmain(String[] args){
        TestInner testInner=newTestInner();//这段代码,里的内部类能在不创建内部类对象的情况下被访问?}
}

这段代码里的内部类不能在不创建内部类对象的情况下被访问

#6


引用 2 楼 suhaibolove 的回复:
1、对于内部类来说,就像一个类的属性一样,对于类本身而言,是可以访问的,而对于其他的类来访问,必须通过这个类去访问他的内部类

你现在定义的是一个实例性质的内部类,你要访问这个内部类的方法必须实现获得外部类的对象,然后通过外部类访问内部类
public class Main {
   class Inner{
        public int a = 10;
        public int get(){
            return a;
        }
    }

   public static void main(String[] args){
   Main main = new Main();
   Inner in =  main.new Inner();
       System.out.println(in.get());
    }


}


如果是静态内部类,则采用如下方式:
public class Main {
   static class Inner{
        public int a = 10;
        public int get(){
            return a;
        }
    }

   public static void main(String[] args){
   Main main = new Main();
   Inner in =  new Main.Inner();
       System.out.println(in.get());
    }


}

#1


问题2:不能被其他类或用他的类 实例化!
具体你可以去看看sington的实现

#2


1、对于内部类来说,就像一个类的属性一样,对于类本身而言,是可以访问的,而对于其他的类来访问,必须通过这个类去访问他的内部类

2、一个构造器默认的方法就是public,当我们在构造器前加上private之后,我们就不能在外部来对其进行实例化了,如果我们需要访问它,
则必须通过内部方法来访问它,这个一般在很多单例模式中可以看到,它的作用就是不能让别人直接访问它,而必须通过某个方法来访问

#3


问题1:可以
问题2:单例模式时就可以用

#4


第二个问题我懂了,但是第一个问题,怎么访问啊?

public class TestInner {

class Inner{
public int a = 10;
public int get(){
return a;
}
}
public static void main(String[] args){
TestInner testInner = new TestInner();
                //这段代码,里的内部类能在不创建内部类对象的情况下被访问?
}
}

#5


引用 4 楼 llm0528 的回复:
第二个问题我懂了,但是第一个问题,怎么访问啊?

Java codepublicclassTestInner {classInner{publicinta=10;publicintget(){returna;
        }
    }publicstaticvoidmain(String[] args){
        TestInner testInner=newTestInner();//这段代码,里的内部类能在不创建内部类对象的情况下被访问?}
}

这段代码里的内部类不能在不创建内部类对象的情况下被访问

#6


引用 2 楼 suhaibolove 的回复:
1、对于内部类来说,就像一个类的属性一样,对于类本身而言,是可以访问的,而对于其他的类来访问,必须通过这个类去访问他的内部类

你现在定义的是一个实例性质的内部类,你要访问这个内部类的方法必须实现获得外部类的对象,然后通过外部类访问内部类
public class Main {
   class Inner{
        public int a = 10;
        public int get(){
            return a;
        }
    }

   public static void main(String[] args){
   Main main = new Main();
   Inner in =  main.new Inner();
       System.out.println(in.get());
    }


}


如果是静态内部类,则采用如下方式:
public class Main {
   static class Inner{
        public int a = 10;
        public int get(){
            return a;
        }
    }

   public static void main(String[] args){
   Main main = new Main();
   Inner in =  new Main.Inner();
       System.out.println(in.get());
    }


}