为什么抽象类不能有构造函数?

如题所述

第1个回答  2023-03-08
1 .接口只能包含抽象方法,抽象类可以包含普通方法。

2. 接口只能定义静态常量属性,抽象类既可以定义普通属性,也可以定义静态常量属性。
3 .接口不包含构造方法,抽象类里可以包含构造方法。
4.抽象类不能被实例化,但不代表它不可以有构造函数,抽象类可以有构造函数,备继承类扩充
5.接口是核心,其定义了要做的事情,包含了许多的方法,但没有定义这些方法应该如何做。
6. 如果许多类实现了某个接口,那么每个都要用代码实现那些方法
7.如果某一些类的实现有共通之处,则可以抽象出来一个抽象类,让抽象类实现接口的公用的代码,而那些个性化的方法则由各个子类去实现。
所以,抽象类是为了简化接口的实现,他不仅提供了公共方法的实现,让你可以快速开发,又允许你的类完全可以自己实现所有的方法,不会出现紧耦合的问题。
第2个回答  2023-03-13
无论哪种语言的抽象类都是可以有构造函数的,你这个论断就是错误的
第3个回答  2023-03-13
抽象类的定义:如果一个类中包含纯虚函数,则该类被称为抽象类,不能被实例化。
所以抽象类都不可实例化,自然构造函数也就没意义了。

为什么抽象类不能有构造函数?
抽象类的定义:如果一个类中包含纯虚函数,则该类被称为抽象类,不能被实例化。所以抽象类都不可实例化,自然构造函数也就没意义了。

C++程序问题: 这个shape类为啥没有构造函数? virtual void draw()const...
原因是这个shape类是一个抽象类,抽象类不能实体化,只能通过派生类来实体化,所以他不需要构造函数,virtual void draw()const=0;是声明一个纯虚函数,这是固定的写法,详情请多去看下C++的语法书就明白了。

为什么抽象类继承实体类前提是实体类必须有明确的构造函数
1.凡是抽象类,就一定会是某个类的父类!否则,这个抽象类的存在没有意义,因为抽象类不能被实例化。2.既然抽象类一定是某一个类的父类,所以,这个抽象类一定要有构造函数!因为在子类的构造函数中不管显式,还是隐式,都必须使用到super语句。这样,抽象类的子类才能成功实例化。3.抽象类也有构造...

抽象类有构造方法吗?
构造函数是对象的基本,没有构造函数就没有对象。若果在父类中(这里就是你的抽象类)中显示的写了有参数的构造函数,在子类继承就必须写一个构造函数来调用父类的构造函数 例子: abstract class Person { 定义一个抽象类,必须被继承 Person(int i) { } } public class Student extends Person {...

java中,抽象类可以有构造方法吗?
抽象类可以有构造方法,只是不能直接创建抽象类的实例对象而已。在继承了抽象类的子类中通过super(参数列表)调用抽象类中的构造方法 示例代码如下:运行结果:

C#中关于抽象类的问题。
Animal animal = new Animal();这是试图对一个抽象类实例化,因Animal抽象类没有构造函数,会造成实例化的失败!所以这是不允许的!Animal animal = new Cat();Cat是一个Animal的子类(派生类),因有相应的构造函数的话,是允许的。允许父类(基类)指示子类(派生类)这种调用规则其实就是我们常...

在JAVA的抽象类中,可不可以写带参数的构造方法。
两个问题,一一作答。1 ,在JAVA的抽象类中,可以写带参数的构造方法。2,如果这个抽象类被继承,在子类中可以用super调用这个构造方法 俗话说 实践出真知 我也是刚刚在Eclipse上写的 呵呵 回答完毕

java抽象类中的构造方法有什么作用?如何理解?
构造函数是负责这个类对象的创建过程,也就是说它负责了创建这个阶段的生命周期,如果说你这个类在创建的时候需要满足什么样的业务规则,那么这些规则的定义就应该在构造函数中。1、java抽象类 使用了关键词abstract声明的类叫作“抽象类”。如果一个类里包含了一个或多个抽象方法,类就必须指定成abstract...

什么是抽象方法?
(关键字abstract)抽象类是为继承而定义的,抽象类中不一定有抽象方法,但有抽象方法一定是抽象类。 抽象类中可以定义构造函数,但是不能使用关键字new 创建其对象。 如果某个类继承于抽象类,应将父类的抽象方法都覆盖,否则子类也是一个抽象类。覆盖实现则可以创建子类的对象。 静态方法和final方法都不能声明为抽象。

构造函数是用来初始化所定义的对象,如果一个类中没有定义任何构造函数...
不对,c++里不写类的构造函数时,编译器会为类创建一个默认的构造函数,虽然这个函数什么都不做,但是类的对象还是会在此时初始化,不过,对象成员的值是随机的,比如,指针型成员变量可能为NULL,也有可能不为NULL。

相似回答
大家正在搜