java 构造函数注解(构造函数的访问修饰符)
构造方法可以处于public、protected、private和默认四种访问级别之一。
public
public这里就不多说了
private
当构造方法为private级别时,意味着只能在当前类访问它,不能被继承,不能被其他程序用new创建实例对象。可以对比其他几种修饰符的作用:abstract修饰的类,不允许被实例化,这点和private修饰构造方法相同,但abstract修饰的类可以被继承,拥有子类,可以创建子类的实例;final类禁止被继承,这点和private修饰构造方法相同,但是final类可以用new创建实例对象。
protected
如果构造函数是protected,那么该类可以继承,可以在被包内其他类中产生实例,但是无法在包外或者子类以外的地方产生实例.
看一下下面的程序
package com.ustc.sub;
public class Base {
protected Base() {
System.out.println("haha");
}
}
package com.ustc.sub;
public class ProtectedDemo extends Base {
public ProtectedDemo() {
super();// 调用父类Base的构造函数,可以调用因为类的访问修饰符为protected
}
public static void main(String args[]) {
ProtectedDemo obj = new ProtectedDemo();
Base objBase = new Base();
}
}
package com.ustc.sup;
import com.ustc.sub.Base;
public class ProtectedDemo1 {
public static void main(String args[]){
Base objBase = new Base();//不能调用因为访问修饰符为protected
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
作用域 当前类 同一package 子孙类 其他package
public √ √ √ √
protected √ √ √ ×
friendly √ √ × ×
private √ × × ×
不写时默认为friendly
子孙类可以在同一包,也可以不一个包,此时以最大权限为准
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com