public class MySQLiteOpenHelper extends SQLiteOpenHelper {
private static final String DABASENAME
= "liujin1015.db";
private static final int VERSION
= 1;
private static final String TABLENAME
= "student";
Context context
;
public MySQLiteOpenHelper(Context context
) {
super(context
, DABASENAME
, null
, VERSION
);
}
public abstract class SQLiteOpenHelper implements AutoCloseable {
private static final String TAG
= SQLiteOpenHelper
.class.getSimpleName();
private final Context mContext
;
@UnsupportedAppUsage
private final String mName
;
private final int mNewVersion
;
private final int mMinimumSupportedVersion
;
private SQLiteDatabase mDatabase
;
private boolean mIsInitializing
;
private SQLiteDatabase
.OpenParams
.Builder mOpenParamsBuilder
;
public SQLiteOpenHelper(@Nullable Context context
, @Nullable String name
,
@Nullable CursorFactory factory
, int version
) {
this(context
, name
, factory
, version
, null
);
}
分析
父类SQLiteOpenHelper自定义构造了有参方法子类如果不重写有参构造方法就会默认super();父类的无参构造方法,但是父类没有无参构造方法所以就会编译报错
解决
子类重写有参构造方法父类加一个无参构造方法
总结
总结1: Java规定类的构造方法只能由new调用,程序员不能直接调用,但可用super()间接调用,类的构造方法是不能继承的! 总结2: 如果子类构造方法中没有显示调用父类构造方法,那么系统自动去调用父类的默认构造方法super()。
总结3:
创建有参构造方法后,系统就不再有默认无参构造方法。如果没有任何构造方法,系统会默认有一个无参构造方法。
总结4:
在没有给类提供任何构造方法时,系统会自动提供一个无参的方法实现为空的构造方法。一旦提供了自定义构造方法,系统将不会再提供这个默认构造方法。如果要使用它,程序员必须手动添加。