JAVA每日作业day6.25

news2024/11/22 21:49:28

ok了家人们今天我们学习了,接口这个知识,我们闲话少叙,一起看看吧。

一,接口

1.1 接口概述

接口是功能的集合。接口的内部主要就是定义方法,包含常量,抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法(JDK9)。

接口不能创建对象;接口是用来被类实现(implements)的,实现接口的类称为实现类。

好处:

功能的定义与实现分离,优化了程序设计。

程序的扩展性

1.2 接口的定义

定义接口的关键字使用interface

接口中可以定义变量,变量有固定的修饰符修饰:public static final。

接口中的变量也称之为常量,其值不能改变。

接口中可以定义方法,方法有固定的修饰符,public abstract

public interface 接口名 {      
    public static final 数据类型 变量名 = 值      
    public abstract 返回值类型  方法名字(参数列表);
}
public interface MyInterface {

    //固定修饰符public static final 常量
    public static final int N=10;

    int M=20;

    //固定修饰符  public abstract 抽象方法
    public abstract void method01();

    public void method02();
}

1.3 类实现接口

类与接口的关系为实现关系,即类实现接口。实现的动作类似继承,只是关键字不同,实现使用implements。实现类需要重写接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象类。

public interface MyInterface {

    //固定修饰符 public static final 常量
    public static final int N=10;
 
    int M=20;
    
    //固定修饰符  public abstract 抽象方法
    public abstract void method01();

    public void method02();}
public class DemoTest {
    public static void main(String[] args) {

        //常量被静态修饰,接口的名字直接调用
        System.out.println(MyInterface.N);

        MyInterfaceImpl my=new MyInterfaceImpl();
        System.out.println(my.M); 
       
        my.method01();       
        my.method02();    
    }
}

 1.4 接口的多实现

public interface MyInter01 {

    public void show01();

}
public interface MyInter02 {

    public void show02();

}
public class MyInterImpl implements MyInter01, MyInter02 {

    @Override
    public void show01() {
        System.out.println("show01..."); 
   }    

    @Override
    public void show02() {
        System.out.println("show02...");
    }
}
public class DemoTest {
    public static void main(String[] args) {
        MyInterImpl my=new MyInterImpl();
        my.show01(); 
        my.show02();
    }
}

1.5 继承类同时实现接口

public interface MyInter01 {

    public void show01();

}
public interface MyInter02 {

    public void show02();

}
public class DemoTest {
    public static void main(String[] args) {

        MyInterImpl my=new MyInterImpl();
        my.show01();
        my.show02();
        my.show03();    
    }
}

1.6 接口新增方法

public interface 接口名称 {

    常量(JDK7及其以前)
    抽象方法(JDK7及其以前)
    默认方法(JDK8额外增加)
    静态方法(JDK8额外增加)
    私有方法(JDK9额外增加)

}

 

public interface MyInter {

    /*        默认方法:默认的修饰符是 public default,public可以省略,
default不可以省略        
              可以继承,也可以重写,重写需要去掉default关键字     */
    
    public default void method01(){
        System.out.println("method01...");
    }

    /*        静态方法:静态方法只能通过接口名调用,不能通过实现类名字和对象调用     */

    public static void method02(){
        System.out.println("method02...");
    }

    /*        私有方法:只能在接口中直接调用     */

//    private void method03(){
//        System.out.println("mthod03....")
//    }
}
public class MyInterImpl implements MyInter{

//    @Override
//    public void method01() {
//
//        System.out.println("impl...method01...");
//
//    }
}
public class DemoTest {
    public static void main(String[] args) {

       MyInterImpl my=new MyInterImpl();
       my.method01();

       MyInter.method02();

    }
}

1.7 接口和抽象的区别

相同点

        位于继承的顶端,用于被其他类实现或继承;

        都不能直接创建对象;

        都包含抽象方法,其子类都必须覆写这些抽象方法;

不同点

        抽象类为部分方法提供实现,避免子类重复实现这些方法,提高代码重用性;

        一个类只能继承一个直接父类(可能是抽象类),却可以实现多个接口;(接口弥补了Java的单继承)

        抽象类是 继承体系中应该具备的功能, 继承体系是一种 is..a关系

        接口是这个事物中的扩展功能,继承体系是一种 like..a关系

ok了家人们,明天见。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1862682.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

让我们聊聊网络安全中会涉及到的IP地址(IP协议)、MAC地址、路由、DNS协议(域名系统)、NAT技术(协议)、以太网帧、ARP协议

网络安全中会涉及到的IP地址(IP协议)、MAC地址、路由、DNS协议(域名系统)、NAT技术(协议)、以太网帧、ARP协议 一.IP地址(IP协议)1.IP地址(IP协议)的作用2.IP…

第一百二十六节 Java面向对象设计 - Java枚举类

Java面向对象设计 - Java枚举类 枚举类型的超类 编译枚举类型时,编译器会创建一个类。 枚举类型可以具有构造函数,字段和方法。枚举类型仅在编译器生成的代码中实例化。 每个枚举类型都隐式地扩展java.lang.Enum类。 Enum类中定义的所有方法都可以与…

SAP 初始化库存移动类型561501511区别简介

项目上线初始化库存经常会用到561这个移动类型,同时我们在平时测试的过程中也会用到会进行库存的初始化,用的比较多是就是561和501这两个移动类型,本文将测试移动类型561&501&511这三个移动类型,分析三者之间的区别&#…

【图像处理实战】去除光照不均(Python)

这篇文章主要是对参考文章里面实现一种小拓展: 可处理彩色图片(通过对 HSV 的 V 通道进行处理)本来想将嵌套循环改成矩阵运算的,但是太麻烦了,而且代码也不好理解,所以放弃了。 代码 import cv2 import …

一分钟彻底掌握Java多线程生产者与消费者模型

代码 package com.example.KFC; public class Cooker extends Thread { public void run() { while (true) { synchronized (Desk.lock) { if (Desk.maxCount 0) { break; } else { if (!Desk.flag) { System.out.println("Cooker makes a hamburger"); …

MIGO增强(扩展字段,屏幕增强字段,常规保存增强)

1.MIGO前台增强: 1.SE18找到增强点:MB_GOODSMOVEMENT 2.找到相应的BADI:右键创建实施 3.找到重写的方法 METHOD if_ex_mb_document_badi~mb_document_before_update.DATA:lv_stat TYPE c,lv_type TYPE bapi_mtype,lv_msg TYPE bapi_msg.DATA:lv_message TYPE string.IF sy-t…

Ubuntu24.04下安装docker,并pull ubuntu22.04,然后编译安装vpp

一、docker安装说明 解决官方源无法下载的问题 二、使用步骤 1.更新软件包索引 sudo apt update2.安装必要的软件包,以允许apt通过HTTPS使用仓库 sudo apt install apt-transport-https ca-certificates curl software-properties-common3.添加Docker的官方GPG…

Cobalt Strike DLL用于永恒之蓝注入

1、原因: 我们在对存在MS17010的漏洞主机进⾏DLL注⼊的时候,⼀般都是⽤的Meataploit的msf venom⽣成出来的,所以每次上线之 后基本都是要经过相对⽐较繁琐的操作之后转到Cobalt Strike去,这样就会显得⾮常⿇烦。所以可以使⽤metas…

服务器性能测试指南:从零到一的超详细规范!

引言: 对于一台服务器的性能测试是确保其能够提供稳定和高效的服务的关键步骤。本文将从零开始,一步一步地介绍如何进行一次完善的服务器性能测试,确保您能够最大程度地了解服务器的性能指标。 一、确定测试目标: 在开始测试之前…

Linux线程:基于环形队列RingQueue的生产消费者模型

目录 一、环形队列的概念及定义 二、POSIX信号量 三、RingQueue的实现方式 3.1RingQueue.hpp的构建 3.2Thread.hpp 3.3Main.cc主函数的编写 3.4Task.hpp function包装器的使用 一、环形队列的概念及定义 此处的环形队列并不是一个真正意义上的环,而是通过对容…

如何集成CppCheck到visual studio中

1.CPPCheck安装 在Cppcheck官方网站下载最新版本1.70,官网链接:http://cppcheck.sourceforge.net/ 安装Cppcheck 2.集成步骤 打开VS,菜单栏工具->外部工具->添加,按照下图设置,记得勾选“使用输出窗口” 2.…

AcWing算法基础课笔记——状态压缩DP:蒙德里安的梦想

状态压缩DP 状态是整数,但把它看成二进制数,二进制中每一位是0或1表示不同的情况。 蒙德里安的梦想 291. 蒙德里安的梦想 - AcWing题库 题目 求把 NM𝑁𝑀 的棋盘分割成若干个 1212 的长方形,有多少种方案。 例如…

算法训练营day19--530.二叉搜索树的最小绝对差+501.二叉搜索树中的众数+236. 二叉树的最近公共祖先

一、530.二叉搜索树的最小绝对差 题目链接:https://leetcode.cn/problems/minimum-absolute-difference-in-bst/ 文章讲解:https://programmercarl.com/0530.%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E7%BB%9D%E5%AF…

Lobe Chat openai claude

claude-3-5-sonnet-20240620 $ docker run -d -p 3210:3210 \-e OPENAI_API_KEYsk-xxxx \-e OPENAI_PROXY_URLhttps://api-proxy.com/v1 \-e ACCESS_CODElobe66 \--name lobe-chat \lobehub/lobe-chatDocker 部署 更新 docker ps CONTAINER ID IMAGE …

【Playwright+Python】手把手带你写一个自动化测试脚本

如何使用代理方式打开网页 在 playwright.chromium.launch() 中传入 proxy 参数即可,示例代码如下: 1、同步写法: from playwright.sync_api import sync_playwrightproxy {server: http:/127.0.0.1:8080}def run():with sync_playwright(…

18.枚举

学习知识:枚举类型、相关的使用方法 Main.java: public class Main {public static void main(String[] args) {myenum[] colorlist myenum.values();//获取枚举中所有对象的引用数组for (myenum one : colorlist){System.out.println(one.toString(…

fork 是一个创建新进程的系统调用

在计算机科学中,fork 是一个创建新进程的系统调用。具体来说,fork 调用会创建一个与当前进程几乎完全相同的副本,包括父进程的内存布局、环境变量、打开的文件描述符等。这个新的进程被称为子进程,而原始进程被称为父进程。 以下…

汇聚荣做拼多多电商怎么运营?

在探讨如何有效运营拼多多电商平台时,我们需要首先明确一个核心问题:如何在竞争激烈的市场中突出重围,吸引并留住消费者。接下来,我们将从五个方面深入剖析这一核心内容,确保每一步都精准有效,以白话文的形…

ATFX汇市:加拿大5月CPI数据来袭,USDCAD逼近关键点位

ATFX汇市:今日20:30,加拿大统计局将公布5月未季调CPI年率,前值为2.7%,预期值2.6%,预期将下降0.1个百分点;同一时间公布的还有加拿大5月核心CPI年率,前值为1.6%,低于2%的温和通胀标准…

【Chapter7】虚拟存储系统,计算机操作系统教程,第四版,左万利,王英

文章目录 [toc]零、前言一、外存资源管理1.1 外存空间划分1.2 外存空间分配1.2.1 空闲块链(慢)1.2.2 空闲块表(UNIX)1.2.3 字位映像图 1.3 进程与外存对应关系 二、虚拟页式存储系统2.1 基本原理2.2 内存页框分配策略2.3 外存块的分配策略2.4 页面调入时机2.5 置换算法2.5.1 最…