精华内容
下载资源
问答
  • 抽象类可以定义构造方法吗
    千次阅读
    2022-03-28 21:47:47

    抽象类不能创建对象,其创建对象没有意义,但是抽象类可以保存一类事物具备的共同属性和行为,让子类进行继承。

    抽象类的构造方法不是给自己用的,而是为了让子类调用构造方法创建对象时初始化用的

    更多相关内容
  • JVAV中抽象类可以构造方法吗?

    千次阅读 2020-09-24 00:02:40
    可以有,抽象类可以声明并定义构造函数。因为你不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当你创建具体的实现类。现在一些面试...

    可以有,抽象类可以声明并定义构造函数。因为你不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当你创建具体的实现类。现在一些面试官问,如果你不能对抽象类实例化那么构造函数的作用是什么?好吧,他可以用来初始化抽象类内部声明的通用变量,并被各种实现使用。另外,即使你没有提供任何构造函数,编译器将为抽象类添加默认的无参数的构造函数,没有的话你的子类将无法编译,因为在任何构造函数中的第一条语句隐式调用super(),Java中默认超类的构造函数。

    展开全文
  • 它们的语法区别:1)接口不能有构造方法抽象类可以有。2)接口不能有方法体,抽象类可以有。3)接口不能有静态方法,抽象类可以有。4)在接口中凡是变量必须是public static final,而在抽象类中没有要求。忽然有此...

    以举例的方式说到如何区分抽象类和接口,这里我们从Java语法谈起,使我们更加了解这两者的内在区别。它们的语法区别:

    1)接口不能有构造方法,抽象类可以有。

    2)接口不能有方法体,抽象类可以有。

    3)接口不能有静态方法,抽象类可以有。

    4)在接口中凡是变量必须是public static final,而在抽象类中没有要求。

    忽然有此一文,是因为同学疑惑道:抽象类居然还有构造方法,又不能直接用来new。我的解释是平时在抽象类中对于构造方法的存在,没有什么印象,是因为IDE默认为你生成了一个无参构造方法,也可以显式地写出构造方法,这个构造方法,是用来被子类调用的,因为任何子类都必须调用从Object开始的所有父亲的构造方法,才算完成初始化工作。那么我引申一下,问他们,接口有构造方法吗?他们的理解,抽象可以有,为什么接口不可以有?!那么在接口里写入构造方法时,编译器提示:Interfaces cannot have constructors。这又何解?

    从语法的角度来说,抽象类必须有构造方法,而接口严禁有构造方法,这本身也说明了它们性质的不同。抽象类是一个类,别的类是用关键字 extends 来继承下来,并扩展的,有非常强的is-a的关系,这种关系一般来说符合里氏代换原则。而接口,是被其他类用关键字 implements 来实现接口定义的方法的。如果没什么区别,何必整出两个不同的关键字。  接口只是定义功能和行为规范,如果一个类实现了一个接口,那么这个类必须遵守这个接口的方法约定,但没有is-a的关系。把墙壁上的“小学生行为规范”想象成一个接口,那么是小学生必须遵守这个约定,但小学生不是“行为规范”。

    构造方法是用来在对象初始化前对对象进行一些预处理的,提供了实例化一个具体东西的入口。接口只是声明而已,不一定要进行什么初始化,就算要进行初始化,也可以到实现接口的那一些类里面去初始化。接口只是用来表述动作,表述规范来的,可以new一台computer,但我们无法new一个IDE、SATA、PCI、PS-2。因此,接口要构造方法何用?接口是一种规范,被调用时,主要关注的是里边的方法,而方法是不需要初始化的,类可以实现多个接口,若多个接口都有自己的构造器,则不好决定构造器的调用次序,构造器是属于类自己的,不能继承,因为是纯虚的,接口不需要构造方法。而抽象类是具体类的祖先,即使是石器时代,也总要干些初始化的工作,抽象类虽然是不能直接实例化,但实例化子类的时候,就会初始化父类,不管父类是不是抽象类都,都会调用父类的构造方法,初始化一个类,先初始化父类,有没有说初始化接口。

    1)Java中抽象类和接口中有构造方法吗?

    在接口里写入构造方法时,编译器提示:Interfaces cannot have constructors。

    A. 构造方法用于初始化成员变量,但是接口成员变量是常量,无需修改。接口是一种规范,被调用时,主要关注的是里边的方法,而方法是不需要初始化的,

    B. 类可以实现多个接口,若多个接口都有自己的构造器,则不好决定构造器链的调用次序

    C. 构造器是属于类自己的,不能继承。因为是纯虚的,接口不需要构造器。

    在抽象类中可以有构造方法,只是不能直接创建抽象类的实例对象,但实例化子类的时候,就会初始化父类,不管父类是不是抽象类都会调用父类的构造方法,初始化一个类,先初始化父类。

    A.方法名与类名相同;

    B.没有返回类型(例如return、void等);

    C.不能被static、final、native、abstract和synchronized修饰,不能被子类继承。

    D.父类的构造方法不能被子类调用,可以通过super语句调用父类的构造方法。

    E.构造方法可以重载,以参数的个数,类型,顺序,分为空参构造方法和有参构造方法。

    注:

    抽象类中不一定有抽象方法,抽象方法一定存在于抽象类中。

    继承抽象类的可以是普通类,但必须重写抽象类中的所有抽象方法,也可以是抽象类,无需重写抽象类中的所有抽象方法。

    注:

    可以说是一种特殊的抽象类,里面的方法全是抽象方法。

    子类实现接口必须对接口中的方法全部重写。

    1)接口不能有构造方法,抽象类可以有。

    2)接口不能有方法体,抽象类可以有。

    3)接口不能有静态方法,抽象类可以有。

    4)在接口中凡是变量必须是public static final,而在抽象类中没有要求。

    展开全文
  • 抽象类定义构造函数,在语法上并不会报错,那么说明构造函数是可以存在的。 既然抽象类并不能实例化,那抽象类中的构造函数存在的意义是什么?抽象类必须被子类继承来实现。 子类在调用父类时 无论自己有没有...

    答案是肯定的。
    在抽象类中定义构造函数,在语法上并不会报错,那么说明构造函数是可以存在的。
    在这里插入图片描述
    既然抽象类并不能实例化,那抽象类中的构造函数存在的意义是什么?
    抽象类必须被子类继承来实现。
    子类在调用父类时 无论自己有没有构造方法都会先去执行父类无参的函数。哪怕父类是抽象类。虽然抽象类不能被实例化,但是可以在构造方法中初始化一些参数;也可以在子类中调用父类的构造方法。
    阅读如下代码:
    父类:

    public abstract class Demo1 {
        String name;
        String sex;
        public Demo1() {
            System.out.println("执行父类的无参构造函数");
        }
        public Demo1(String name,String sex){
            this.name = name;
            this.sex = sex;
            System.out.println("执行父类的有参构造函数");
        }
        public void print() {
            System.out.println("name"+this.name+",sex"+this.sex);
        }
    }
    

    子类:

    public class Demo2 extends Demo1 {
            public Demo2(){
                System.out.println("执行子类的构造函数");
            }
    
        public Demo2(String name, String sex) {
            super(name, sex);
            System.out.println("执行子类的有参构造函数");
        }
    }
    

    测试类:

    public class Test {
        public static void main(String[] args) {
            Demo2 demo2 = new Demo2();
            Demo2 dm2 = new Demo2("张三","男");
            dm2.print();
        }
    }
    

    输出的结果为:
    在这里插入图片描述

    展开全文
  • 类的继承结构中,越往上...定义抽象类的作用是将一类对象的共同特点抽象出来,成为代表该类共同特性的抽象概念,其后在描述某一具体对象时,只要添加与其他子类对象的不同之处,而不需要重复类的共同特性。这样就使...
  • 抽象类定义构造方法

    千次阅读 2018-11-17 18:02:40
    抽象类定义构造方法 abstract class Person{ private String name; public Person(){ System.out.println("hello,jack"); } public String getName(){ return name; } public void setName...
  • Java抽象类可以构造函数吗

    万次阅读 多人点赞 2019-03-11 21:23:51
    可以有,抽象类可以声明并定义构造函数。因为你不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当你创建具体的实现类。现在一些面试...
  • java抽象类构造方法吗?

    千次阅读 2020-05-27 21:50:09
    定义抽象类 格式 : abstract class 类名{} 举例 : 抽象类中的 方法 抽象方法 abstract void eat();...抽象类中,有构造方法,但是有不能new,那么构造方法干嘛的呢? 给子类用的!!! 抽象类,一样可以使用多态来创建子
  • 首先,抽象类可以构造器、静态方法抽象类不一定要被其他类继承,可直接不实例化就使用 抽象类可以构造器、静态方法构造器能被子类继承并完成初始化,但不会创建抽象类的实例对象。静态方法的好处是不实例...
  • java抽象类构造方法和普通类的构造方法一样都是用来初始化类只是抽象类构造方法不能直接调用 因为抽象类不能实现实例但是一旦一个普通类继承了抽象类 便也可以在构造函数中调用其抽象类的构造函数也可以使用其...
  • Java中抽象类和接口中有构造方法吗?

    千次阅读 2019-04-18 20:22:00
    (1) Java中抽象类和接口中有构造方法吗? ①在接口中 不可以构造方法 在接口里写入构造方法时,编译器提示:Interfaces cannot have constructors。 A. 构造方法用于初始化成员变量,但是接口成员变量是常量,无需...
  • 接口是我们常用的,抽象类好像并不是怎么常用,但这并不代表他不重要,他可以被继承,可以构造方法可以给类中的成员变量赋初值,接口就没有这样的功能。       抽象类的出现使得...
  • 抽象类可以构造函数吗?--可以有,若是不写,提供默认protected级别构造. 如果有,其带参构造和无参构造什么时候,怎样调用?--无参构造自动调用,带餐构造必须显式调用,和是否抽象类无关. /*--===------------------...
  • 抽象类可以构造函数吗

    千次阅读 2017-06-11 16:48:25
    而派生类在实例化调用构造函数的时候会先调用基类中的构造函数,所以抽象类构造函数也是可以被调用的,所以抽象类可以构造函数。抽象类的析构函数最后是虚析构函数。 比如上面的程序在执行的时候就会执行...
  • [Java基础]Java中抽象类和接口中有构造方法吗?

    万次阅读 多人点赞 2017-07-05 10:56:13
    2.问题描述:Java中抽象类和接口中有构造方法吗? 3.问题解答: (1)Java中抽象类和接口中有构造方法吗? ①在接口中 不可以构造方法 在接口里写入构造方法时,编译器提示:Interfaces ...
  • 抽象类可以构造函数吗?

    千次阅读 2020-04-21 15:22:49
    Can an abstract class have a constructor? 抽象类可以构造函数吗? If so, how can it be used and for what pur
  • 抽象类定义和使用方法

    千次阅读 2020-10-26 12:22:02
    抽象类: **1**、抽象类怎么定义? 在class前面加abstract关键字... **5**、抽象类虽然无法实例化,但是抽象类构造方法,这个构造方法可以被子类继承的,但是如果子类是非abstract类型的,则一定要进行实例化对象
  • 抽象方法必须在抽象类中吗

    千次阅读 2021-03-11 10:44:32
    抽象方法必须在抽象类中吗2020-07-01 15:01:18文/叶丹1、抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。2、Final类中的属性和方法都必须被final修饰符修饰。3、最终类不能派生子类,最终方法不能被...
  • java抽象类可以被继承吗?

    千次阅读 2021-03-06 06:39:35
    Java语言中,用abstract 关键字来修饰一个类时,这个类叫作抽象类。...抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所...
  • 本文实例讲述了Java抽象类和抽象方法定义与用法。分享给大家供大家参考,具体如下:一...抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不...
  • 抽象类和抽象方法定义及讲解?

    千次阅读 多人点赞 2019-02-26 17:26:23
    (2)抽象类可以包含抽象成员,但非抽象类中不可以。 (3)如果一个非抽象类抽象类中派生,则其必须通过覆盖来实现所有继承而来的抽象成员。 Java 中声明抽象类时需要使用abstract 关键字,具体语法格式如下:...
  • 以上两点可以说明,静态方法只要有字节码存在就可以运行,所以抽象类可以有静态方法。 我再多说一嘴,静态和抽象不能共存与方法上,因为静态属于字节码,不需要对象就可以运行,而抽象方法没有方法体,运行没有...
  • 一、抽象类与抽象方法定义 抽象类:只在普通类的基础上扩充了一些抽象方法 抽象方法:只声明而未实现的实体(即抽象方法没有方法体) 所有的抽象方法和抽象方法所在的类都要使用abstract关键字定义,用abstract...
  • 抽象类构造方法的使用

    千次阅读 2018-05-08 15:58:29
    //抽象类构造方法的使用package Extends;abstract class Persons{//定义一个抽象类 String name; int age; char sex; //定义一个构造函数 public Persons(String name,int age,char sex){ this.name = name; ...
  • 同时抽象方法所在的类也要用abstract定义,表示抽象类。 举例:定义一个抽象类抽象类中没有具体实现,因此抽象类不能直接实例化对象 abstract class Person{ private String name;//姓名属性 ...
  • 抽象类构造方法

    千次阅读 2016-08-12 17:50:56
    首先要说明的是:抽象类可以定义构造方法。  在之前认为:1,抽象类是不能实例化的;2,定义抽象类肯定是用来实例化的;3,抽象类中没有构造函数。  这三句话第一句肯定是正确的,第二句和第三句呢...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 432,311
精华内容 172,924
关键字:

抽象类可以定义构造方法吗