方法可以用public,private,protected关键字修饰,构造方法也是如此。
但构造方法也可以什么也不用,那这种情况下其默认的修饰类型是什么呢?
以下作为研究代码:
注意这几个类所在的包的关系.
package com.java.one;
/**
* 构造方法的类型可以是public,private,protected,也可以不写,
* 那不写的时候其默认类型到底是哪个呢?
* 本例子为了研究构造方法的默认类型是什么
* @author Administrator
*
*/
public class OuterClass {
//1.首先我们用这个public构造方法,r然后在其他类中使用它声明对象。
public OuterClass(){}
//2.我们把上面的构造方法注释掉,换用下面的
// OuterClass(){}
//这时发现OtherPacConstruc类中的OuterClass two=new OuterClass();报错,
//所以可以推断:不带关键字修饰的构造方法默认就是protected !
//3.我们再把上面两个构造方法都注释掉,这时发现没有报错
//所以可以得出结论:不写构造方法的时候,编译器默认
//创建一个public类型的,不带任何参数的构造方法!
public void methodOfPublic(){
System.out.println("public 方法。");
}
private void methodOfPrivate(){
System.out.println("private 方法。");
}
protected void methodOfProtected(){
System.out.println("protected 方法。");
}
}
package com.java.one;
public class SamePacConstruc {
/**
* @param args
*/
public static void main(String[] args) {
OuterClass one=new OuterClass();
//在同一包下,可以调用public,protected方法,但不能调private方法。
one.methodOfPublic();
one.methodOfProtected();
}
}
package com.java.two;
import com.java.one.OuterClass;
public class OtherPacConstruc {
/**
* @param args
*/
public static void main(String[] args) {
OuterClass two=new OuterClass();
two.methodOfPublic();//不在同一包下,只能调用public方法。
}
}
所以可以推断:不带关键字修饰的构造方法默认就是protected !