Java中接口,抽象类.嵌套接口区别和用法

简介: Java中接口,抽象类.嵌套接口区别和用法

1接口


   接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口与类的区别:

    接口不能用于实例化对象。

    接口没有构造方法

    接口中所有的方法必须是抽象方法

    接口不能包含成员变量,除了 static 和 final 变量。

    接口不是被类继承了,而是要被类实现。

    接口支持多继承。

接口特性

    接口是隐式抽象的,当声明一个接口的时候,不必使用abstract关键字。

    接口中每一个方法也是隐式抽象的,声明时同样不需要abstract关键字。

    接口中的方法都是公有的。

抽象类和接口的区别

  1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。
  2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。
  3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。
  4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

如下图创建一个item类


package com.itheima.dao;
/**
 * 食物条目
 */
public interface Item {
    //名字
    public String name();
    //嵌套接口  打包
   public Packing packing();
    //价钱
    public float price();
}

在定义一个汉堡类Burger

package com.itheima.domain;
import com.itheima.dao.Item;
import com.itheima.dao.Packing;
//汉堡  实现条目
public  abstract class Burger implements Item {
    //抽象类里面可以有非抽象的方法
    public Packing packing() {
        return new Wrapper();
    }
    //抽象方法
    public abstract float price() ;
}

这个里面就是没有全部实现接口中的方法,把类定义为了抽象类


2.嵌套接口

interface嵌套interface

作用是降低耦合性


package com.itheima.dao;
/**
 * 食物条目
 */
public interface Item {
    //名字
    public String name();
    //嵌套接口  打包
   public Packing packing();
    //价钱
    public float price();
}
package com.itheima.dao;
//食物包装
public interface Packing {
    public String pack();
}

上面就是接口之间的嵌套


3.用抽象类来实现接口,可以不用重写接口中的方法

item接口


package com.itheima.dao;
/**
 * 食物条目
 */
public interface Item {
    //名字
    public String name();
    //嵌套接口  打包
   public Packing packing();
    //价钱
    public float price();
}

Burger 类为抽象类,只实现一部分方法

package com.itheima.domain;
import com.itheima.dao.Item;
import com.itheima.dao.Packing;
//汉堡  实现条目
public  abstract class Burger implements Item {
    //抽象类里面可以有非抽象的方法
    public Packing packing() {
        return new Wrapper();
    }
//
//    //抽象方法
//    public abstract float price() ;
}

VegBurger实现抽象类没有实现的其他方法

package com.itheima.domain;
public class VegBurger extends Burger  {
    //继承抽象类,抽象类没有实现的方法,必须实现
    public float price() {
        return 25.0f;
    }
    public String name() {
        return "Veg Burger";
    }
}


目录
打赏
0
0
0
0
9
分享
相关文章
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
java语言后台管理若依框架-登录提示404-接口异常-系统接口404异常如何处理-登录验证码不显示prod-api/captchaImage 404 (Not Found) 如何处理-解决方案优雅草卓伊凡
94 5
Java 高级面试技巧:yield() 与 sleep() 方法的使用场景和区别
本文详细解析了 Java 中 `Thread` 类的 `yield()` 和 `sleep()` 方法,解释了它们的作用、区别及为什么是静态方法。`yield()` 让当前线程释放 CPU 时间片,给其他同等优先级线程运行机会,但不保证暂停;`sleep()` 则让线程进入休眠状态,指定时间后继续执行。两者都是静态方法,因为它们影响线程调度机制而非单一线程行为。这些知识点在面试中常被提及,掌握它们有助于更好地应对多线程编程问题。
80 9
Java面试必问!run() 和 start() 方法到底有啥区别?
在多线程编程中,run和 start方法常常让开发者感到困惑。为什么调用 start 才能启动线程,而直接调用 run只是普通方法调用?这篇文章将通过一个简单的例子,详细解析这两者的区别,帮助你在面试中脱颖而出,理解多线程背后的机制和原理。
75 12
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
2221 2
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
利用Java获取京东SKU接口指南
本文介绍如何使用Java通过京东API获取商品SKU信息。首先,需注册京东开放平台账号并创建应用以获取AppKey和AppSecret。接着,查阅API文档了解调用方法。明确商品ID后,构建请求参数并通过HTTP客户端发送请求。最后,解析返回的JSON数据提取SKU信息。注意遵守API调用频率限制及数据保护法规。此方法适用于电商平台及其他数据获取场景。
Java社招面试题:& 和 && 的区别,HR的套路险些让我翻车!
今日分享的主题是如何区分&和&&的区别,提高自身面试的能力。主要分为以下四部分。 1、自我面试经历 2、&amp和&amp&amp的不同之处 3、&对&&的不同用回答逻辑解释 4、彩蛋
|
3月前
|
java如何请求接口然后终止某个线程
通过本文的介绍,您应该能够理解如何在Java中请求接口并根据返回结果终止某个线程。合理使用标志位或 `interrupt`方法可以确保线程的安全终止,而处理好网络请求中的各种异常情况,可以提高程序的稳定性和可靠性。
66 6
Java接口和抽象类
Java接口和抽象类
101 0
【惊天揭秘】Java编程绝技大曝光:接口、抽象类、静态类与非静态类的神秘面纱终被揭开!
【8月更文挑战第22天】Java支持面向对象编程,通过接口、抽象类、静态类(如枚举与工具类)及普通类实现设计原则。接口定义行为规范,允许多重继承;抽象类含未实现的抽象方法,需子类完成;静态类常为工具类,提供静态方法;普通类则实例化对象。恰当运用这些结构能提升程序质量。
56 2
java接口和抽象类的区别,以及使用选择
java接口和抽象类的区别,以及使用选择
96 0

热门文章

最新文章