0

具有默认构造函数的抽象类和具有私有构造函数的类之间有什么区别?

我还有另一个疑问,请考虑下面的这个程序。谁能解释一下。这样的代码有什么用吗?

abstract class AbstractAndPrivate 
{
AbstractAndPrivate()
{
     AbstractAndPrivate ref= new AbstractAndPrivate(1) {

        @Override
        int m2() {
        // TODO Auto-generated method stub
        return 0;
        }
                    };  

            }
void m1()
{
    System.out.println("m1() accessed");
}
abstract int m2();

AbstractAndPrivate(int a)
{

}
public static void main(String[] args) {

System.out.print("hello ");

 AbstractAndPrivate ref= new AbstractAndPrivate() {public int m2(){return 1;}}; 
 System.out.println(ref);
 ref.m1();
 ref.m2();
}
}
4

2 回答 2

3

具有默认构造函数的抽象类和具有私有构造函数的类之间有什么区别?

如果有默认构造函数,它将可以从子类调用。如果它是private,您将只能在同一个类中创建子类,因为这是可以访问私有构造函数的唯一上下文。

请注意,您提供的代码都不是这些情况 - 它明确提供了一个包保护的无参数构造函数。这不是私有的,也不是默认构造函数。

类是否抽象与其提供的构造函数正交,尽管只有私有构造函数的抽象类会强制您在声明类中创建类以创建实例,而不是仅仅依靠您在声明中创建实例班级。

于 2013-12-19T15:15:46.943 回答
0

此外,抽象类可以有一个抽象方法,需要由子类实现(除非它们也是抽象的)

编辑:-1?来吧,抽象方法也解释了抽象类和具有私有构造函数的类之间的逻辑差异。请...

于 2013-12-19T15:16:18.870 回答