精华内容
下载资源
问答
  • 2016-03-14 11:15:03

    抽象类?什么是抽象类?

    从名字上来讲,我觉得就是对类的一个抽象,把类(事物)抽象出来,当做模板,也就是说在有很多类的时候,我们把一些相似的类的某些方法,某些成员变量抽象出来作为一个模板,让这些类更方便的去继承。所以,在抽象类中,有抽象方法也有普通方法。一个抽象类就是包含抽象方法的类(java编程思想)。

    在继承抽象类的时候,子类必须得实现抽象类中的所有抽象方法,抽象类也无法去创建实例,因为里面含有抽象的方法。

    接口?什么是接口?
    接口通常来说是一个对行为的抽象,它是提供给别人调用的方法。它里面所有的方法都必须为public,而且它的成员变量必须是public static final 的。


    接口与抽象类的区别:
    1.继承抽象类的子类们的本质都是相似的,它们体现的是一种 “is-a" 的关系,就像动物中的猫和狗;而对于接口的继承更多的是一种行为的相似,是一种 “like-a” 的关系,比如飞机和鸟,它们都具有飞的行为,却并不需要在本质上相似。

    2.抽象类可以拥有任意范围的成员数据,既可以是抽象,也可以是非抽象;但是接口,所有的方法必须是抽象的,所有的成员变量必须是 public static final的,某种程度上来说,接口是对抽象类的一种抽象。

    3.一个类只能继承一个抽象类,但却可以实现多个接口。


    更多相关内容
  • Java抽象类与接口实验报告
  • Java 抽象类与接口 编程练习

    千次阅读 2021-02-28 18:21:42
    一、面向抽象编程7175 编程题 编程语言:Java題目內容:使用接口或者抽象类编写程序实现显示员工基本信息。具体要求如下:(1)使用接口或者抽象类实现基类Employer(体会接口抽象类的不同),包含姓名、部门和工资三个...

    一、面向抽象编程

    7175 编程题 编程语言:Java

    題目內容:

    使用接口或者抽象类编写程序实现显示员工基本信息。具体要求如下:

    (1)使用接口或者抽象类实现基类Employer(体会接口和抽象类的不同),包含姓名、部门和工资三个属性,显示工资的方法showSalary()和显示奖金的抽象方法showBonus();提示:因每位职工奖金不同,showBonus()方法定义为抽象方法,只抽象定义,不具体实现;

    (2)定义BasicEmployee和GoodEmployee类,重写Employer类中的方法,不同员工有不同的工资和奖金;

    (3)定义主类进行测试,要求输入两个不同的员工信息,并输出其个人信息。

    输入输出说明:

    输入:

    张三 前台 5000

    李四 开发 6000 4000

    输出:

    我叫张三,在前台部门,我的工资是5000.0

    我是普通员工,没有奖金,加油升级!

    我叫李四,在开发部门,我的工资是6000.0

    我是优秀员工,我的奖金是4000.0

    代码:

    import java.util.*;

    abstract class Employer {//定义抽象类作为父类

    String name;//姓名

    String department;//部门

    double salary;//工资

    double bonus;//奖金

    abstract void showSalary();//输出工资的抽象方法

    abstract void showBonus();//输出奖金的抽象方法

    }

    class BasicEmployee extends Employer {

    BasicEmployee(String n,String d,double s) {

    this.name=n;

    this.department=d;

    this.salary=s;

    }

    void showSalary() {

    System.out.printf("我叫%s,在%s部门,我的工资是%.1f\n",this.name,this.department,this.salary);

    }

    void showBonus() {

    System.out.printf("我是普通员工,没有奖金,加油升级!\n");

    }

    }

    class GoodEmployee extends Employer {

    GoodEmployee(String n,String d,double s,double b) {

    this.name=n;

    this.department=d;

    this.salary=s;

    this.bonus=b;

    }

    void showSalary() {

    System.out.printf("我叫%s,在%s部门,我的工资是%.1f\n",this.name,this.department,this.salary);

    }

    void showBonus() {

    System.out.printf("我是优秀员工,我的奖金是%.1f\n",this.bonus);

    }

    }

    public class Main {

    public static void main(String[] args) {

    Scanner cin=new Scanner(System.in);

    Employer e;

    String n1=cin.next();

    String d1=cin.next();

    int s1=cin.nextInt();

    e=new BasicEmployee(n1,d1,s1);

    e.showSalary();

    e.showBonus();

    String n2=cin.next();

    String d2=cin.next();

    int s2=cin.nextInt();

    int b2=cin.nextInt();

    e=new GoodEmployee(n2,d2,s2,b2);

    e.showSalary();

    e.showBonus();

    }

    }

    二、面向接口编程

    7178 编程题 编程语言:Java

    題目內容:

    编写一个USB接口程序,模拟计算机启动过程和关闭过程启动过程中要加载鼠标、键盘、麦克风等USB设备,具体要求如下:

    (1)定义一个接口USB,包含两个抽象方法turnOn()he turnOff(),分别用于表示USB设备的启动和关闭

    (2)编写鼠标Mouse、键盘KeyBoard、麦克风Mic类,实现接口中的turnOn()、turnOff()方法,方法中显示“XX设备启动了”或“XX设备关闭了”即可

    (3)编写计算机类Computer,要求有一个表示计算机上USB插槽数量的数组;添加USB设备的方法add(USB usb),功能为遍历所有插槽,如果有空闲的就添加一个USB设备

    模拟开机启动USB设备的powerOn()方法,功能为遍历所有USB接口,如果连接了USB设备,则启动USB设备,然后显示“计算机开机成功”

    模拟关机关闭USB设备的powerOff()方法,功能为遍历所有USB接口,如果连接了USB设备,则关闭USB设备,然后显示“计算机关机成功”

    (4)编写测试类,要求建立计算机对象,建立鼠标、键盘、麦克风对象,并添加到计算机中,启动计算机,关闭计算机

    输入输出说明:

    无输入;

    输出:

    鼠标启动了

    键盘启动了

    麦克启动了

    计算机开机成功

    鼠标关闭了

    键盘关闭了

    麦克关闭了

    计算机关机成功

    代码:

    import java.util.*;

    interface USB {//定义接口

    void turnOn();

    void turnOff();

    }

    class Mouse implements USB {

    final String name="鼠标";

    public String getName() {

    return this.name;

    }

    public void turnOn() {

    System.out.printf("%s启动了\n",getName());

    }

    public void turnOff() {

    System.out.printf("%s关闭了\n",getName());

    }

    }

    class KeyBoard implements USB {

    final String name="键盘";

    public String getName() {

    return this.name;

    }

    public void turnOn() {

    System.out.printf("%s启动了\n",getName());

    }

    public void turnOff() {

    System.out.printf("%s关闭了\n",getName());

    }

    }

    class Mic implements USB {

    final String name="麦克";

    public String getName() {

    return this.name;

    }

    public void turnOn() {

    System.out.printf("%s启动了\n",getName());

    }

    public void turnOff() {

    System.out.printf("%s关闭了\n",getName());

    }

    }

    class Computer {

    USB usb[]=new USB[10];//定义USB接口数组

    int number;

    public void add(USB u) {

    usb[++number]=u;

    }

    public void powerOn() {

    for(USB u:usb) {

    if(u!=null)u.turnOn();

    }

    System.out.printf("计算机开机成功\n");

    }

    public void powerOff() {

    for(USB u:usb) {

    if(u!=null)u.turnOff();

    }

    System.out.printf("计算机关机成功\n");

    }

    }

    public class Main {

    public static void main(String[] args) {

    Computer c=new Computer();

    c.add(new Mouse());

    c.add(new KeyBoard());

    c.add(new Mic());

    c.powerOn();

    c.powerOff();

    }

    }

    本文同步分享在 博客"nefu_ljw"(CSDN)。

    如有侵权,请联系 support@oschina.cn 删除。

    本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

    展开全文
  • 下面小编就为大家带来一篇Java基础篇_有关接口抽象类的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 抽象类: 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是...在Java抽象类表示的是一种继承关系,一个类只能继承一个抽象类,而一个类却可以实现多个接口接口接口(英文:
  • java 抽象类与接口的练习,包括代码及注释,个人笔记
  • Java 抽象类接口的区别

    千次阅读 2022-03-15 20:06:50
    抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract (隐式声明)方法; 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final(隐式声明)类型的(必须在声明时...

    一、语法层面上的区别

    • 抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract (隐式声明)方法;
    • 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final(隐式声明)类型的(必须在声明时赋值);
    • 接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
    • 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

     

    二、设计层面上的区别

            a. 抽象类是对一种事务的抽象,是对整个类进行抽象,包括属性,行为(方法)。接口是对行为(行为)的抽象。如果一个类继承或实现了某个抽象类,那么一定是抽象类的种类(拥有同一种属性或行为的类)。

      b. 设计层面不同,抽象类作为很多子类的父类,是一种模板设计,而接口是一种规范,它是一种辐射式设计,也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象方法中添加实现,子类可以不用变更,而对于接口不行,如果接口进行了变更,那么实现它的类都需要做变更。

    三、示例

    • java接口的修饰符:abstract(默认不写。interface本身就是抽象的,加不加abstract都一样)
    •  接口中字段的修饰符:public static final(默认不写)

     解释如下:

    • public: 使接口的实现类可以使用该常量;
    • static:接口不涉及和任何具体实例相关的细节,因此接口没有构造方法,不能被实例化,没有实例变量,只有静态变量。(static修饰就表示它属于类的,随的类的加载而存在的,当JVM把字节码加载进JVM的时候,static修饰的成员已经在内存中存在了。如果是非static的话,就表示属于对象的,只有建立对象时才有它,而接口是不能建立对象的,所以接口的常量必须定义为static。)
    • final:接口中不可以定义变量,即定义的变量前都要加上final修饰,使之成为常量,且必须赋初始值!(final修饰就是保证接口定义的常量不能被实现类去修改,如果没有final的话,由子类随意去修改的话,接口建立这个常量就没有意义了。
    • 接口中方法的修饰符:public abstract(默认不写)

             接口方法仅仅描述方法能做什么,但是不指定如何去做,所以接口中的方法都是抽象的(abstract方法)

    四、注意

    1 接口和抽象类分别在什么时候使用

            a. 如果拥有一些方法,并想让他们中的一些有默认的具体实现,请选择抽象类

      b. 如果想实现多重继承,那么请使用接口,由于java不支持多继承,子类不能继承多个类,但一个类可以实现多个接口,因此可以使用接口来解决。

      c. 如果基本功能在不断变化,那么就使用抽象类,如果使用接口,那么每次变更都需要相应的去改变实现该接口的所有类。

    2 JDK8中接口的默认方法和静态方法

            JDK8中,Oracle引入默认方法和静态方法,用来减少抽象类和接口的差异,可以在接口中提供默认的实现方法并实现该接口的类不用强制去实现这个方法。JDK8中接口的静态方法只能通过接口名直接去调用,接口中的默认方法因为不是abstract的,所以可重写,也可以不重写。

    3 优先级问题

            当一个类,既继承了一个父类,又实现多个接口,父类中的成员方法与接口中的默认方法重名,子类就近选择执行父类的成员方法

    4 接口的继承

            一个接口能继承另外一个或者多个接口,这和类之间的继承比较相似,接口的继承使用extends关键字,子接口继承父接口的方法.如果父接口中的默认方法有重名的,那么子接口需要重写一次

    5 默认方法

            使用default修饰,不可省略,供子类调用或者子类重写

      可以继承,可以重写,二选一,但是只能通过实现类的对象来调用

      接口中,有多个默认方法时,实现类都可继承使用,如果继承方法有重名的,必须重写一次

    6 其他

            1.接口中无法定义成员变量,但是可以定义常量,其值不可以改变,默认使用public static final修饰

      2.接口中,没有构造方法,不能创建对象

      3.接口中,没有静态代码块

    展开全文
  • 主要介绍了浅谈Java抽象类接口的个人理解,具有一定借鉴价值,需要的朋友可以参考下。
  • Java抽象类与接口学习心得

    千次阅读 2015-11-23 17:17:18
    Java抽象类的“三必须” “五不能” ,抽象类与接口联系玉区别;

    一、抽象类

    对于抽象类有“三必须”与“五不能”。


    三必须(三种情况必须定义为抽象类):

    1、一个类中直接定义了一个或多个抽象方法;

    2、一个类继承了一个抽象父类,但没有实现父类中的抽象方法;

    3、一个类实现了一个接口,但没有完全实现接口包含的抽象方法;


    五不能:

    1、抽象类不能被实例化(即抽象类不能被new);

    2、abstract与final永远不能同时使用(final修饰的类不能被继承,修饰的方法不能被重写;而abstract修饰的类只能被继承才有意义,修饰的方法必须被重写才有意义);

    3、abstract与static不能同时修饰方法(static修饰的方法属于类本身,如果抽象方法被static修饰,通过类调用该方法时会因为没有方法体而出错);

    4、abstract与private不能同时使用(abstract修饰的方法必须重写才有意义,而private使访问权限受限);

    5、abstract不能修饰变量(即没有抽象变量);


    二、接口

    接口是彻底化的抽象类。

    需要注意的是:

    1、一个接口可以有多个父接口,但接口只能继承接口,不能继承类;

    2、接口里的方法全是抽象方法(public abstract);

    3、接口里定义的字段(Field)只能是是常量(public static final);


    三、抽象类与接口相似之处

    1、抽象类与接口不能被实例化,只能被其他类继承或实现;

    2、抽象类和接口都可以包含抽象方法,抽象类的继承类与接口的实现类都必须实现父类中的抽象方法;


    四、抽象类与接口的主要区别

    1、设计目的区别:抽象类体现的是一种模板式的设计,用户可以在这个基础上增加完善功能;而接口体现的是一种规范用户只能且必须完成这个规范;

    2、抽象类可以包含普通方法,而接口不可以;

    3、Java中一个类只能有一个直接父类,但一个类可以实现多个接口,接口从某种程度上说弥补了Java单继承的不足;

    4、抽象类可以包含构造器,用于抽象类的初始化,而接口不可以;




    展开全文
  • 主要给大家介绍了关于java抽象类、抽象方法、接口与实现接口的相关资料,文中通过示例代码将四者介绍的非常详细,并且简单介绍了抽象类和接口的区别,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
  • Java抽象类与接口详解(小白必看)

    千次阅读 2020-04-06 16:23:31
    目录抽象类接口接口与多继承接口单继承Java 8新特性默认方法和静态方法抽象类与接口区别 抽象类 抽象类:用abstract修饰的类叫做抽象类。 在讲抽象类之前有必要强调一下abstract修饰符: abstract修饰的类为抽象类...
  • 简述java抽象类与接口的异同点

    千次阅读 2019-12-13 10:45:01
    java抽象类定义 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类。 抽象类除了不能...
  • Java 抽象类接口

    千次阅读 热门讨论 2021-11-14 16:09:56
    文章目录一、抽象类1....在Java面向对象当中,所有的对象都是用过类进行描绘的,但是并不是所有的类都是用来描绘对象的,如果一个类没有包含足够多的信息来描述一个具体的对象,这样的类就是抽象类。 1.2抽象方法的
  • Java中的抽象类接口

    千次阅读 多人点赞 2022-04-08 15:17:42
    各位铁汁们大家好呀!今天让我们继续学习java,看看java中的抽象类接口到底是什么? 里面也会讲到多态呀,一起来看看吧
  • java抽象类接口

    千次阅读 2019-05-14 17:34:15
    java抽象类接口 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 开发工具关键技术:MyEclipse10 作者:朱海恩 撰写时间: 2019.04.30 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...
  • Java抽象类接口的区别

    万次阅读 多人点赞 2019-02-07 14:10:07
    Java中,可以通过两种形式来体现OOP的抽象:接口抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口...
  • Java抽象类与接口的异同点

    千次阅读 2019-08-31 17:25:52
    抽象类与接口相同点: 都可以定义抽象方法 都不可以被实例化 子类必须对所有的抽象方法提供具体实现,否则子类必须声明为抽象类 抽象类与接口相同点: 接口中的方法必须是抽象的方法,抽象类可以存在非抽象方法 ...
  • java抽象类与接口的区别

    千次阅读 2019-03-08 20:39:50
    抽象类接口都包含类可以由子类继承实现的成员,但抽象类是对根源的抽象,而接口上是对动作的抽象。抽象类的功能要远超过接口,那为什么还要使用接口呢?这主要是由于定义抽象类的代价高(因为每个类只能继承一个类...
  • Java抽象类接口的区别

    千次阅读 2020-02-09 16:56:31
    抽象类:如果一个类含有抽象方法(抽象方法是一种特殊的方法,它只有声明,而没有具体的实现),则称这个类为抽象类抽象类必须在类前用abstract关键词修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类...
  • java抽象类与接口

    千次阅读 2015-01-08 14:57:40
    接口抽象类java语言中支持抽象类的两种机制,是Java程序设计使用多态性的基础。(在面向对象中,接口的不同实现即为多态) 在那些面向对象(object)的程序设计语言的概念中,类(classss)指的是一种抽象的数据...
  • Java抽象类与接口的区别

    千次阅读 2018-01-14 21:01:35
    很多常见的面试题都会出诸如抽象类接口有什么区别,什么情况下会使用抽象类和什么情况你会使用接口这样的问题。本文我们将仔细讨论这些话题。 在讨论它们之间的不同点之前,我们先看看抽象类接口各自的特性。...
  • Java抽象类与接口有什么区别

    万次阅读 多人点赞 2019-06-13 20:55:16
    abstract class和interface是Java中对于抽象类定义两种机制,正是由于这两种机制的存在,才赋予Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有相当大的相似性,设置可以互相...
  • Java抽象类和Java接口一样,都用来声明一个新的类型。并且作为一个类型的等级结构的起点。(2).格式:public abstract class abstractDemo{/**属性*/private String name;/**方法*/public abstract void f...
  •  1、Java接口Java抽象类大的一个区别,在于Java抽象类可以提供某些方法的部分实现,而Java接口不可以,这大概是Java抽象类的优点吧,但这个优点非常有用。 如果向一个抽象类里加入一个新的具体方法时,那么它...
  • Java面试题(六) - 抽象类与接口的区别

    千次阅读 多人点赞 2019-03-21 13:33:53
    抽象类与接口的区别,这是一个经常被问到面试题,区别主要有以下几点,我们可以从几个方面进行分析: (一) 继承方面: (1) 抽象类只能单继承;接口可以多实现 (二) 成员属性方面: (1) 抽象类中可以有普通属性,也...
  • java抽象类 接口

    千次阅读 2015-01-12 16:13:39
    Java接口Java抽象类的认识 很难理解为什么要有接口这个概念,虽说是可以实现所谓的多继承,可一个只有方法名,没有方法体的东西,我实现它又有什么用呢?我从它那什么也得不到,除了一些方法名,我直接在具体类...
  • 说一下Java抽象类接口存在的意义价值

    千次阅读 多人点赞 2018-10-15 16:29:41
    首先简单的介绍一下抽象类: 定义是很简单的,我们这里不写官方的语言,我自己看着都烦,我们就用白话介绍,抽象类本质是一个类,没问题,那么类里面一般都是有方法的,方法包括方法名和方法体,这是常识对不对,...
  • java抽象类接口有什么意义

    千次阅读 2021-02-04 16:53:06
    为什么接口抽象类不能实例化,为什么接口可以多个实现而抽象类只能单继承,特别是java8之后,抽象类接口里面都可以写代码后,就更加分不清了,今天重新整理一下。 什么是抽象类(abstract class) 使用abstract...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 583,289
精华内容 233,315
关键字:

java抽象类与接口

java 订阅