在看一段代码的时候,看到了抽象类竟然有定义的构造函数,当时十分不解。因为记得Abstract类不能被实例化,所以理所当然的认为Abstract类不会有构造函数。结果编译成功,程序能正常运行。
测试的程序为:
public abstract class Base {
public Base() {
System.out.println("In the Base Constrction");
}
public Base(int i) {
System.out.println(i);
}
public abstract void display();
// other code
}
class Derive extends Base {
public Derive() {
System.out.println("In the Derive Constrction");
}
public Derive(int i) {
super(i);
// other operations
}
public void display() {
// other code
}
}
测试结果发现,当创建Derive对象时,会像普通的类一样首先调用父类(即Abstract类)的构造函数,并且在Abstract中可以创建带有参数的构造函数。
在查阅了一些资料后并结合测试结果,得到以下结论:Abstract可以定义构造函数(包括带函数的构造函数),因为要保证其子类在创建的时候能够进行正确的初始化,但是Abstract类不能被实例化。
分享到:
相关推荐
派生类构造函数和析构函数的执行顺序 在面向对象编程中,继承是非常重要的一个概念。派生类可以继承基类的成员,实现代码的重复利用。但是,基类的构造函数和析构函数不能被继承。如果在派生类中需要对新增加的成员...
在Java中,枚举类型可以有构造函数,可以有多个实例变量,可以实现接口,可以有抽象方法等。枚举类型的实例变量可以是final的,也可以不是final的。 在上面的代码中,我们定义了一个枚举类型returnEnum,它有两个...
在C++编程中,"通讯录 c++ 构造函数 类"这一主题涉及到对象导向编程中的核心概念,如类的设计、构造函数的使用以及数据成员和成员函数的管理。下面将详细解释这些知识点: 1. **类(Class)**: 类是C++中的一个...
如命名空间(namespace)、类成员(Class members)、成员函数(Member ...抽象类(Abstract Classes)、访问控制(Controlling Access to Class Members)、友元(Friends)、构造函数(Constructors)、析构函数...
3. 构造函数不能是虚方法或抽象方法,也不能声明为static。 三、构造函数的应用场景 1. 初始化成员变量:通过构造函数,可以在对象创建时就对成员变量赋值,确保每个实例的初始状态。 2. 设置默认值:如果没有...
2. 接口只能包含方法声明、属性、索引器和事件,不能有常量、字段、构造函数、析构函数或静态成员。 3. 接口的所有成员默认为`public`,因此不能有`private`修饰符。 4. 类可以实现多个接口,用逗号分隔。例如: `...
这个实例"向基类构造函数传递参数"将深入探讨如何在派生类中调用基类的构造函数,并传递参数以实现更灵活的代码设计。以下是对这个主题的详细讲解: 首先,让我们理解什么是多态性。多态性(Polymorphism)是指一个...
7. **构造函数的限制**:抽象类可以有构造函数,但这些构造函数不能是抽象的。通常,抽象类的构造函数用于初始化抽象类中的成员。 8. **接口和抽象类的区别**:虽然两者都用于定义行为规范,但接口只定义方法、属性...
根据给定的信息,我们可以深入探讨C++中的抽象类与继承机制。下面将详细介绍如何通过抽象类和继承在C++中实现特定的功能。 ### 概述 在这个示例中,我们有三个具体的类:`Student`、`Lecture` 和 `Module`,它们都...
抽象类you构造函数 抽象类只能用作基类,无法实例化(new) 抽象类不能被实例化。 抽象类存在的意义: 1.抽象类不能被实例化,只能被其他类继承 2.继承抽象类的子类必须把抽象类中的所有抽象成员都重写(实现)(除非...
在C++编程语言中,类(Class)...总之,类、构造函数和析构函数是C++面向对象编程中的关键概念,它们共同实现了对象的生命周期管理、数据封装和行为抽象。理解并熟练运用这些概念对于编写高效、健壮的C++程序至关重要。
例如,考虑`Location`类,它定义了三个构造函数:无参构造函数、一个接受单个整数参数的构造函数以及一个接受两个整数参数的构造函数。 ```cpp class Location { private: int X, Y; public: Location(); // 无参...
一个简短的控制台程序,使用了构造函数,虚方法 静态类,静态字段,接口,抽象类,继承,适合刚入门的人看
- 抽象类可以有构造函数,但只能在继承类中使用,用于初始化父类状态。 - 抽象类可以有访问修饰符如public、protected、private等,但通常抽象类会声明为public,以允许其他包中的类进行继承。 ### 二、Java抽象...
3. **特性**:抽象类可以拥有构造函数、字段、属性、方法等,包括非抽象成员的实现。 4. **限制**:一个类只能直接继承一个抽象类,这体现了单一继承的原则。 **接口(Interface)**: 1. **定义**:接口是一组无...
在JavaScript中,由于没有类的概念,我们使用构造函数来模拟类的行为。通过`new`操作符调用构造函数创建的对象被称为实例对象。实例化是将抽象的构造函数转化为具体的对象的过程,使得我们可以直接操作和使用对象的...
1. 请创建一个抽象类DataStructure,该类包括下面的成员变量和成员函数: 1) 一个成员变量len,表示里面的元素个数最大值 2) 构造函数DataStructure(int l),将len初始化为0 3) 虚析构函数~DataStructure() 4) ...
4. 接口中不能包含常量、字段、构造函数、析构函数、静态成员。 例如,我们可以定义一个接口 ITest,如下所示: public interface ITest { int A { get; set; } void Test(); event EventHandler ...
Java 8之后,接口可以包含默认方法和静态方法,但仍不能有实例字段或构造函数。 - 抽象类可以包含成员变量,而接口只能有常量(final static)。 4. **访问权限** - 抽象类的访问修饰符可以是public、protected、...
在这个课件中,我们将深入理解类与对象的定义、使用,以及相关的构造函数、析构函数、访问权限、成员函数、静态成员、友元等关键知识点。 首先,类(Class)是C++中定义的一种数据结构,它包含了数据成员(Data ...