精华内容
下载资源
问答
  • 抽象类可以有方法的实现吗
    千次阅读
    2021-02-28 14:53:53

    抽象类必须要有抽象方法吗?

    答:不需要,

    抽象类不一定有抽象方法;但是包含一个抽象方法的类一定是抽象类。(有抽象方法就是抽象类,是抽象类可以没有抽象方法)

    解释:

    抽象方法:

    java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要声明而不需要实现。

    抽象方法与抽象类:

    当一个方法为抽象方法时,意味着这个方法必须被子类的方法所重写,否则其子类的该方法仍然是abstract的,而这个子类也必须是抽象的,即声明为abstract。abstract抽象类不能用new实例化对象,abstract方法只允许声明不能实现。如果一个类中含有abstract方法,那么这个类必须用abstract来修饰,当然abstract类也可以没有abstract方法。 一个抽象类里面没有一个抽象方法可用来禁止产生这种类的对象。

    Java中的抽象类:

    abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系。但是,一个类却可以实现多个interface。

    在abstract class 中可以有自己的数据成员,也可以有非abstarct的成员方法,而在interface中,只能够有静态的不能被修改的数据成员(也就是必须是static final的,不过在 interface中一般不定义数据成员),所有的成员方法都是abstract的。

    更多相关内容
  • 它们的语法区别: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,而在抽象类中没有要求。

    展开全文
  • 抽象类可以有实现体的方法

    千次阅读 2015-10-16 16:02:00
     突然发现,原来这些基础的类都是抽象类(用 abstract 修饰的),原来认为抽象类都是只可以实现抽象方法的; 现在看来, 抽象类可以拥有具体实现了的方法,只是不能直接实例化(不能直接new 抽象方法); ...

    今天,准备看看公司项目是如何封装基本的一些基础的方法。比如:BaseConttoller/BaseService/BaseEntity extends AbstractEntity 等

            突然发现,原来这些基础的类都是抽象类(用 abstract 修饰的),原来认为抽象类都是只可以实现抽象方法的;

    现在看来,抽象类也可以拥有具体实现了的方法,只是不能直接实例化(不能直接new 抽象方法);

    转载于:https://my.oschina.net/craftsdream/blog/518074

    展开全文
  • 抽象类必须要抽象方法吗?

    万次阅读 2019-07-22 14:36:51
    2.抽象类可以没有抽象方法 3.一个类如果包含抽象方法,那么这个类必须是抽象类,否则编译就会报错。 4.最关键的一点就是如果一个类是抽象类,那么这个类是不能被实例化的。 如下: public abstract cl...

    答案是:不必须。

    这个题目主要是考察对抽象类的理解。

    说一下我个人的理解吧。

    1.如果一个类使用了abstract关键字修饰,那么这个类就是一个抽象类。

    2.抽象类可以没有抽象方法

    3.一个类如果包含抽象方法,那么这个类必须是抽象类,否则编译就会报错。

    4.最关键的一点就是如果一个类是抽象类,那么这个类是不能被实例化的。

      如下:     

    public abstract class  MQTest {
        
    }

     现在user这个类就是一个抽象类,如果直接 使用该类创建新对象是行不通的,编译直接报错。

    抽象类只能用其子类(该子类不能是抽象类)去创建新对象。

    接下来我就用狗的例子来说明,先创建一个动物类(抽象类),然后创建一个狗类(抽象类),狗下面再分为金毛和二哈(非抽象类)。

    动物类:

    package com.xingli.abstractDemo;
    
    import lombok.Data;
    
    /**
     *@ClassName Animal
     *@Description 动物抽象类
     *@Auther William
     *@Date 2019/7/22 14:11
     *@Version 1.0
     */
    @Data
    public abstract class Animal {   
       //定义一个抽象的“让动物叫”的方法 
       public abstract void say();
    }

    狗类:

    package com.xingli.abstractDemo;
    
    /**
     *@ClassName Dog
     *@Description 狗类的抽象方法
     *@Auther William
     *@Date 2019/7/22 14:13
     *@Version 1.0
     */
    public abstract class Dog extends Animal{
        //默认继承父类的say方法
    }

    金毛:

    package com.xingli.abstractDemo;
    
    /**
     *@ClassName JINMAODog
     *@Description 金毛
     *@Auther William
     *@Date 2019/7/22 14:16
     *@Version 1.0
     */
    public class JINMAODog extends Dog{
    
        //实现父类的抽象方法
        @Override
        public void say() {
            System.out.println("金毛:我的名字叫金毛");
        }
    
    }
    

    二哈:

    package com.xingli.abstractDemo;
    
    /**
     *@ClassName ERHADog
     *@Description 二哈
     *@Auther William
     *@Date 2019/7/22 14:21
     *@Version 1.0
     */
    public class ERHADog extends Dog{
        @Override
        public void say() {
            System.out.println("二哈:我的名字叫二哈");
        }
    }
    

    直接父类创建新对象:结果报错

    使用动物子类创建新对象,因为狗类也是抽象接口所以也报错

    使用非抽象子类创建新对象(正确)

    public class Test {
        public static void main(String[] args) {
            Animal erhaDog = new ERHADog();
            Animal jinmaoDog = new JINMAODog();
            erhaDog.say();
            jinmaoDog.say();
        }
    }

     

    展开全文
  • 抽象类可以实现接口吗?什么意义?

    万次阅读 多人点赞 2019-06-03 19:49:52
    2.这不是没有意义的事情,是一种思想,当你自己写的类想用接口中个别方法的时候(注意不是所有的方法),那么你就可以用一个抽象类实现这个接口(方法体中为空),然后再用你的类继承这个抽象类,这样就可以达到...
  • 抽象类必须要抽象方法吗?抽象类能使用 final 修饰吗?
  • Java抽象类中是否可以有构造方法

    千次阅读 2021-03-23 10:40:52
    无论是无参构造方法,还是参构造方法可以正常存在 之所以产生这个疑问,是因为Java抽象类本身的要求抽象类是不能被实例化的,抽象类只能作为其他类的父类,或者通过向上转型指向其子类。所以既然抽象类是不允许...
  • 众所周知,在实现类实现接口时,必须全部重写接口的抽象方法,如 public interface MyInter{  function abstract void A();  function abstract voidB(); } //实现类中,必须全部重写A和B方法 public class ...
  • 抽象类是不是必须要抽象方法

    千次阅读 2021-08-15 23:57:30
    抽象类除了不能实例化对象之外,类的其它功能依然存在,成员变量、成员方法和构造方法的访问方式和普通类一样。由于抽象类不能实例化对象,所以抽象类必须被继承,才能被使用。也是因为这个原因,通常在设计阶段决定...
  • java抽象类可以被继承吗?

    千次阅读 2021-03-06 06:39:35
    抽象类是它的所有子类的公共属性的集合,是包含一个或多个抽象方法的类。抽象类可以看作是对类的进一步抽象。在面向对象领域,抽象类主要用来进行类型隐藏。java抽象类可以被继承吗?抽象类可以被继承。抽象类除了不...
  • 抽象方法必须在抽象类中吗

    千次阅读 2021-03-11 10:44:32
    抽象方法必须在抽象类中吗2020-07-01 15:01:18文/叶丹1、抽象方法必须在抽象类中,所以抽象类中的方法都必须是抽象方法。2、Final类中的属性和方法都必须被final修饰符修饰。3、最终类不能派生子类,最终方法不能被...
  • 接口可以继承接口。 抽象类并不能继承接口,但可以实现...抽象类可以有静态的 main 方法抽象类在面向对象中是被用来描述现实中的抽象事物, 抽象类没有对象概念所以不能被实例化. 但可以定义属性和方法, 其中属性方.
  • java抽象类有构造方法吗?

    千次阅读 2020-05-27 21:50:09
    定义抽象类 格式 : abstract class 类名{} 举例 : 抽象类中的 方法 抽象方法 abstract void eat();...抽象类中,构造方法,但是不能new,那么构造方法干嘛的呢? 给子类用的!!! 抽象类,一样可以使用多态来创建子
  • 官方解释:Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的实现,而这些实现可以具有不同的行为(功能)。 又到了我最喜欢打...
  • java抽象类和抽象方法

    千次阅读 2021-03-07 00:02:17
    一、什么是抽象类和抽象方法没有具体功能的实现,通过子类继承后重写方法实现一定约束的类称之为抽象类抽象类必须被abstract修饰。抽象方法就是只有方法声明,没有方法体的方法抽象类的使用一般通过继承来实现...
  • 抽象类实现某个接口

    千次阅读 2021-11-26 10:15:36
    /** * created by wlx on 2021/11/26 ...抽象类没有实现接口的方法 public abstract class Test implements Itest{ } 子类需实现接口的全部方法,否则报错 public class Testapp extends Test{ @Overri...
  • 抽象类实现问题

    千次阅读 2018-12-14 09:05:22
    包含抽象方法的类称为抽象类,但并不意味着抽象类中只能抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要三点区别: 1)抽象方法必须为public或者protected(因为...
  • Java抽象类可以有构造函数吗

    万次阅读 多人点赞 2019-03-11 21:23:51
    可以有抽象类可以声明并定义构造函数。因为你不可以创建抽象类的实例,所以构造函数只能通过构造函数链调用(Java中构造函数链指的是从其他构造函数调用一个构造函数),例如,当你创建具体的实现类。现在一些面试...
  • 接口和抽象类中只有方法名,没有定义的,如果你不定义 也就是空方法,接口就是为了弥补java不能多重继承,接口针对的是对象而不是实现实现的部分可以交由对象去实现。这就是java中的多态啊。 ...
  • 11.抽象类必须要抽象方法吗?

    千次阅读 2020-07-26 22:07:01
    抽象方法就是抽象类,是抽象类可以没有抽象方法) 解释: 抽象方法: java中的抽象方法就是以abstract修饰的方法,这种方法只声明返回的数据类型、方法名称和所需的参数,没有方法体,也就是说抽象方法只需要...
  • 学些Java的抽象类和抽象方法,书中介绍一个例子:【问题描述】编写一个抽象父类SpeedMeter速度表,提供普通方法getSpeed()计算速度,给子类使用,但留给子类实现抽象方法getRadius(),且getSpeed()依赖getRadius();...
  • java抽象类实现接口可以不用实现方法 学习struts2时,拦截器接口Interceptor继承了Serializable接口,拦截器抽象类AbstractInterceptor实现了Interceptor接口,在AbstractInterceptor类中却没有声明或...
  • 接口、抽象类实现

    千次阅读 2019-04-13 10:49:25
    2. 接口能被类(抽象类和具体类)实现,区别在于抽象类实现接口,可以实现该接口的方法,也可以实现该接口的方法;具体类必须实现接口的所有方法 3. 接口可以被接口继承,但不允许被类继承 4. 类之间可以相互继承...
  • 直接上代码 public abstract class Parent { public abstract void dosomething(); public void say(){ dosomething(); System.out.println("www.chinoukin.com"); } } ...public class Chi
  • python 抽象类、抽象方法实现

    千次阅读 2020-10-11 09:51:06
    python 抽象类、抽象方法实现 抽象基类提供了一种要求子类实现指定协议的方式,如果一个抽象基类要求实现指定的方法,而子类没有实现的话,当试图创建子类或者执行子类代码时会抛出异常。 python 没有抽象类、...
  • java抽象类的构造方法和普通类的构造方法一样都是用来初始化类只是抽象类的构造方法不能直接调用 因为抽象类不能实现实例但是一旦一个普通类继承了抽象类 便也可以在构造函数中调用其抽象类的构造函数也可以使用其...
  • Java中抽象类实现接口

    千次阅读 2021-05-06 14:22:31
    抽象类可以有非抽象方法 如果一个类中至少一个抽象方法,那么它一定是抽象类,则类名前必须加上abstract关键字,抽象方法没有方法体。 抽象类无法实例化 只有覆盖了抽象类中所有的抽象方法后,其子类才可以实例...
  • C#抽象类和抽象方法(很详细,你值得拥有!!!)

    千次阅读 多人点赞 2020-06-18 19:10:32
    什么是抽象类? 什么是抽象方法? 抽象类和抽象方法有什么特性? 抽象类的使用场景? 抽象类的作用? 抽象类和接口的区别? 抽象类和抽象方法怎么声明? 抽象类和抽象方法如何使用?
  • 简单来说,接口是公开的,里面不能私有的方法或变量,是用于让别人使用的,而抽象类可以有私有方法或私有变量的,另外,实现接口的一定要实现接口里定义的所有方法,而实现抽象类可以有选择地重写需要用到的方法...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,077,114
精华内容 430,845
关键字:

抽象类可以有方法的实现吗