【问题标题】:abstract class with default constructor and class with private constructor difference具有默认构造函数的抽象类和具有私有构造函数的类的区别
【发布时间】:2013-12-19 15:13:30
【问题描述】:

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

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

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();
}
}

【问题讨论】:

    标签: java abstract-class private-constructor


    【解决方案1】:

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

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-10
        • 1970-01-01
        • 1970-01-01
        • 2012-07-22
        • 1970-01-01
        • 2015-10-25
        • 2022-01-22
        相关资源
        最近更新 更多