黑马程序员技术交流社区

标题: 构造函数的修饰符问题 [打印本页]

作者: 王震阳老师    时间: 2012-10-13 22:03
提示: 该帖被管理员或版主屏蔽
作者: 马磊    时间: 2012-10-13 22:27
A B 和C 都能运行,D肯定是不行的,因为这里构造函数前面修饰符是private,不能在类外面调用执行。
作者: 沈佳龙    时间: 2012-10-13 22:30
A()
       {  
             System.out.println("default 构造函数已经运行。。。");
               return;        

     }
第一眼看见觉得这个是构造方法 后来发现也不是为什么呢    构造方法没有类型,如果加了类型就不是构造方法了   而变成了了一个普通的方法,为什么上面的那个方法不是构造方法呢   因为你写了一个返回   构造方法是没有返回类型的。
作者: 梁世喜    时间: 2012-10-13 22:36
本帖最后由 梁世喜 于 2012-10-13 22:37 编辑

除private A()外均为正确的。

public A()共有的毫无疑问了。

protected A() protected 修饰的方法访问范围为同类、同包和其子类。所以protected构造可用。

A()  没有修饰符修饰的构造,修饰符与类相同(毕老师的视频里有提到)。

private A() 为本来私有,除本类外,其他均不可访问。


以上是我的理解,欢迎大家补充。
作者: 王亚运    时间: 2012-10-13 22:50


比较笨,挨个试的。
第四个失败。

private:只有A自己才可以存取, 使用keyword private
package:只有和A同一個package的class才可以存取, 沒有相對應的keyword
protected:只有同一個package或是A的子類別才可以存取, 使用keyword protected
public:所有的class都可以存取, 使用keyword public

对吗?
作者: 王震阳老师    时间: 2012-10-13 23:30
梁世喜 发表于 2012-10-13 22:36
除private A()外均为正确的。

public A()共有的毫无疑问了。

这个我很认同!
作者: 徐升兴    时间: 2012-10-13 23:41
D不可以,其余皆可。
编译器报错:
E:\java\javajobs>javac A.java
A.java:5: error: A() has private access in A
                A a=new A();
                    ^
1 error
作者: 叶追秋    时间: 2015-4-3 23:27
D中私有化了构造函数,所以不能创建A类的对象。其它三个答案都可以。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2