java构造方法的默认类型研究

来源:互联网 发布:淘宝卖家感谢信有创意 编辑:程序博客网 时间:2024/05/25 23:59

方法可以用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 !