java构造函数修饰符

今天看了剑指offer中的第二章-面试需要的基础知识,对其中的一段C#面试代码,比较感兴趣,想着能否给改成java,结果没改成,出现了问题,本文是针对这一点来总结一下,下面是C#与java代码,但是在eclipse环境下,java代码如此改写,编译器提醒构造函数有问题,究其原因,问题是由java的构造函数前的访问修饰符public与特殊修饰符static所导致的。

java 构造函数,可以被访问修饰符修饰,而不能被特殊修饰符修饰;(在编译器经过测试)

访问修饰符: public (最常用,其他类的任何位置都可以访问)                 

                  protected(能够在同一包中被子类访问)

                  什么都不写,""(能够被同一包里的类访问)

                  private(经常使用的单例模式中)

特殊修饰符: static (静态) final(最终) abstract(抽象) synchronized(同步) 这些都不能够放在构造函数前使用                 

 1 class A{
 2      public A(String text){
 3           console.writeln(text);
 4      }
 5 }
 6 
 7 class B(){
 8      static A a1=new A("a1");
 9      A a2=new A("a2");
10 
11      static B(){
12           a1=new A("a3");
13      }
14      
15      public B(){
16           a2=new A("a4");
17      }
18 }
19 class Program{
20      B b=new B();
21 }
View Code
 1 public class A {    
 2     public  A(String aStr){
 3         System.out.println("A 构造函数 初始化:"+aStr);
 4     }
 5 }
 6 
 7 class B {
 8     static A a = new A("a1");
 9     A aa = new A("a2");
10 
11     static B() {
12         a = new A("a3");
13     }
14 
15     public B() {
16         aa = new A("a4");
17     }
18     public static void main(String[] args) {
19         B b=new B();
20     }
21 }
java View Code
原文地址:https://www.cnblogs.com/GranceWang2014/p/4627712.html