2013-12-12 124 views
0

我们不能实例化抽象类,但抽象类可以包含构造函数。抽象类中的构造函数

那么抽象类中的构造函数的目的是什么?

+0

这个问题已经在这里回答http://stackoverflow.com/a/2105793/2817802 – Baby

+0

他们可以继承。 – wxyz

+0

阅读全文: [1]:http://stackoverflow.com/questions/2105783/what-is-the-use-of-creating-a-constructor-for-an-abstract-class-in-java – rachana

回答

0

抽象类可以有一些类

父类的构造,即使在子对象创建时被调用的母公司。

休息集思广益我让你

1

我们可以实例化一个抽象类的实例,以混凝土子类实例化的程度。当它们被实例化时,JVM将调用构造函数super()。例如,如果你尝试这种

public abstract class Base { 
    protected Base() { 
    System.out.println("Base"); 
    } 
} 

public class Concrete extends Base { 
    public Concrete() { 
    System.out.println("Concrete"); 
    } 
    public static void main(String[] args) { 
    new Concrete(); 
    } 
} 

你会看到

Base 
Concrete 
1

Constrcutors被使用,主要是初始化数据成员。抽象类也是如此,特别是如果你不想让继承类访问你的私有类。例如:

public abstract class AbstractClass { 
    private int value; 
    public AbstractClass (int value) { 
     this.value = value; 
    } 
} 

public class ConcreteClass extends AbstractClass { 
    public ConcreteClass (int value) { 
     super(value); 
    } 
} 
1

是的,这是事实,你不能初始化直接abstract类的对象,但这个类可以是超一流的,从其中一些其他类延伸,并创建子对象时,父类的构造函数被调用。

你的问题,

那么什么是构造函数,抽象类的目的是什么?

这是很有用的与扩展abstract类就是通常被称为初始化部分,如果不放置一个构造函数abstract类,然后编译器类的一个对象被创建时,一些默认值来初始化参数本身创建一个默认的构造函数。

0

继承的基本概念是首先实例化超类然后子类。 因此,当我们继承一个抽象类,让JVM首先实例化为超类。 所以对于实例化类的构造函数很有用。