`

【翻译】Abstract Classes Have Constructors

阅读更多
1) In Java , we have default constructors provided for classes by the compiler (in case one is not declared).

2) The abstract classes can't be instantiated by using the new operator because they don't provide full implementation of all the methods.

Then does it make sense to have constructors inside abstract classes. Let us find it using a sample abstract class:

public abstract class Test{
   public abstract void doSomething();
}

The decompiled code for this class will show the truth about constructors in abstract classes in Java

public abstract class Test
{
    public Test()
    {
    }
    public abstract void doSomething();
}


Woha!! that constructor was provided by Java. Why?

The reason is that when a class extends any other class and an instance of the subclass is created then the constructor calls are chained and the super class constructors are invoked. This rule is no exception for abstract class

Moreover, having constructors in a class doesn't necessarily mean that instance of that class will be created using the new operator, but the constructors are intended for writing any initializing code.
总而言之,有构造函数的类不见得就能用new操作符来实例化
分享到:
评论

相关推荐

    c++实验三、四.pdf

    The classes are designed to have multiple constructors, including default constructors and parameterized constructors. The classes also have functions to calculate the area of the shape, display the ...

    Java.SE.7.Programming.Essentials

    分享的图书,有关Java SE 7 SDK标准的书,全英文。相应章节: Chapter 1. Introducing the Basics of ... Understanding Java Interfaces and Abstract Classes Chapter 11. Throwing and Catching Exceptions in Java

    Members of Classes

    c++ Members of Classes Access Control Constructors for class Member initializer list Destructors for class Static Members Constant Member Self-reference Friend

    Copy Constructors and Assignment Operators终极解释

    在C++编程语言中,复制构造函数(Copy Constructor)和赋值运算符(Assignment Operator)是两个非常关键的概念,特别是在处理对象的拷贝和赋值时。它们默认由编译器提供,但通常需要根据具体需求进行自定义,以确保正确...

    Absolute C plus plus

    Structures and Classes; Constructors and Other Tools; Operator Overloading, Friends, and References; Strings; Pointers and Dynamic Arrays; Separate Compilation and Namespaces; Streams and File I/O; ...

    aa-constructors-classes

    构造函数和类项目 是时候练习创建和使用构造函数和ES2015类了。 您的目标是实现/problems目录的每个文件中列出的要求。 除了每个文件顶部的提示外,还提供Mocha规范来测试您的工作。 要开始使用,请使用以下命令: ...

    C++超详细的基础教程

    Constructors and Destructors. Pointers to classes. 2.操作符重载,this,静态成员 Overloading Operators. this. Static members 3.类之间的关系 Relationships between classes: friend. Inheritance 4.虚拟...

    Classes_C#_

    10. 抽象类与接口(Abstract Classes and Interfaces): 抽象类包含抽象方法(没有实现的方法),用作其他类的基础。接口则完全由方法定义,不包含字段或实现。两者都用于实现多态。 11. 常量与静态成员...

    Constructors Properties_C#_

    在C#编程语言中,构造函数(Constructors)和属性(Properties)是两个核心概念,对于初学者来说理解和掌握它们至关重要。本文将深入探讨这两个概念,以及它们在C#程序设计中的应用。 首先,让我们从构造函数开始。...

    java英文笔试

    Interfaces do not have constructors, and they cannot be instantiated directly. #### 10. What is the difference between an abstract class and an interface? **Answer**: In Java, an abstract class can...

    Visual C++ 6.0 21天自学教程

    Constructors and Destructors Inheritance Summary -------------------------------------------------------------------------------- The appendix is designed to provide you with a quick review of ...

    Addison Wesley - Symbian OS Explained Effective C++ Programming for Smartphones(解密:iTePub.Net).zip

    Foreword xi About This Book xiii Who Is It For? xiv How to Use This Book xiv Notation and Code Conventions Used in This Book xv Introduction to Symbian OS xvii ...2.3 Constructors and Destructors 17

    一个用户管理c++设计课题

    This assignment will give you practice building some simple classes and making use of basic C++ features including: encapsulation, references, dynamic memory allocation, simple constructors and ...

    Building Java Programs-Classes.ppt

    在Java中,类的组成包括字段(fields)、实例方法(instance methods)和构造器(constructors)。字段是用来存储对象状态的数据成员,实例方法定义了对象的行为,而构造器则用于初始化新创建的对象。封装...

    operator overloading and copy constructors 英文原版

    在C++编程语言中,操作符重载和复制构造函数是两个高级特性,它们允许程序员扩展标准操作符的功能,以适应自定义类的行为,同时控制对象的复制过程。 操作符重载允许程序员为类定义的操作符提供特定的实现,使得...

    jmockit测试例子

    Mockup always comes to us when we try to break system dependency...."Tests can easily be written that will mock final classes, static methods, constructors, and so on. There are no limitations.

    C程序设计教学课件:CHAPTER5CLASSES.pptx

    7. 构造函数与析构函数(Constructors and the Destructor) 构造函数在对象创建时自动调用,用于初始化对象的成员。析构函数在对象销毁前调用,用于清理资源。C++中的构造函数名称与类名相同,而析构函数前面有一...

    C++实现vector。构造Constructors,析构,运算符重载operators,vector迭代器实现,assign等

    模拟vector,Constructors, operators, assign, at, back, begin, clear, empty, end, erase, front, insert, pop_back, push_back, reserve, resize, size, swap,迭代器实现。

Global site tag (gtag.js) - Google Analytics