抽象类 构造的修饰符

来源:百度知道 编辑:UC知道 时间:2024/05/06 20:12:49
为什么抽象类的构造的修饰符可以为private但编译不报错
可是能为private没意义啊,如果是private的话子类不是不能构造了,那还要这个抽象类干嘛?

这肯定是可以的撒。

abstract class t1
{
public t1()
{
}
}

抽象类是有构造函数的,就象我上面写的代码,你去试一下不会报错,不仅仅是private,就是public 也是可以的。

首先你的问题说明你没有了解抽象类的使用方法。抽象类一般自己不能实例化,只有之类可以将其实例化。子类继承了抽象类之后,实例化的时候会默认先调用父类的构造函数。如果父类的构造函数是私有的,那么子类不能继承此父类。如果抽象类的构造函数为私有的,同样此抽象类也不可能有子类了。

但这并不意味着抽象类没有子类就不可以使用了啊。如果是这样的话,就如你所以说java加入这个机制没有任何意义。

一个抽象类如果没有子类,但他又不能实例化对象,那么他在什么地方使用呢?? 我们可以使用其静态方法。

abstract class test
{
public static void print()
{
System.out.println("hello world");
}
}

下面是完整的使用例子:
class test
{
public static void main(String[]args)
{
t1.print();
}
}

abstract class t1
{
private t1(){}

public static void print()
{
System.out.println("hello world");
}
}

这样的使用方式在某些场合是能够用的上的。

不想它被实例化或派生呗,可能里面只是几个public static的成员变量等等

没人规定抽象类的