1. final是类型说明符,表示关闭继承,即final类不能有子类;
但final类可能可以在类外创建对象(即final类的构造方法可以不是private型):
在同一包中时,可以在任何另外一个类中使用public类与友好类创建对象;
不在同一包中时(import语句),可以在任何另外一个类中使用public类创建对象。
2. private是访问控制符, private方法不能在类外调用。所有构造方法都是private的类,不可以在该类外创建对象,也不能有子类。
说明:
所有构造方法都是private的类,不能有子类。
(编译器会报错:Implicit super constructor PrivateConstructor() is not visible for default constructor. Must define an explicit constructor.)
1 public class PrivateConstructor { 2 private PrivateConstructor() { 3 // TODO Auto-generated constructor stub 4 } 5 } 6 7 //erro:所有构造方法都是private的类,不能有子类 8 //class A extends PrivateConstructor { 9 // 10 //}
当用子类的构造方法创建一个子类对象时,子类的构造方法总是先调用父类的某个构造方法(即如果子类的构造方法没有明显地指明使用父类的哪个构造方法,子类调用父类的不带参数的构造方法);若是父类没有非私有的构造函数,那么子类便不能创建对象。