JAVA中interface接口的使用[通俗易懂]

JAVA中interface接口的使用[通俗易懂]提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录前言一、interface是什么?二、关于interface的使用1.接口的格式代码例子12.用登录方法具体实现代码例子2:抽象类和接口之间的区别总结前言随着面向对象思想的发展,类的使用越来越方便,但是有时候类却不能实现对于方法的抽象,只能对于自己的属性的抽象。(所谓抽象简单理解为没有具体的实现)于是我们便在java语言中引出了一种接口的方式(interface)。(以下内容基于JAVA语言)提示:以下是本篇文章正文内容.

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

随着面向对象思想的发展,类的使用越来越方便,但是有时候类却不能实现对于方法的抽象,只能对于自己的属性的抽象。(所谓抽象简单理解为没有具体的实现)于是我们便在java语言中引出了一种接口的方式(interface)。(以下内容基于JAVA语言)


提示:以下是本篇文章正文内容,下面案例可供参考

一、interface是什么?

interface是一种接口的方式和抽象类很相似,并且接口可以实现多接口,但是在JAVA语言中类的继承不能多继承。interface是一种基于方法进行分类的,其主要目的是为了弥补类相对于方法的抽象。
用一个生动的例子来表示就是:
对于不同的动物都有吃的动作,但是一般的植物就没有吃的动作,有一些特殊的植物也有吃的动作。但是对于植物就不能把吃的动作写上去了,只有在写食人花之类的时候,把吃的动作补充就去也就是implements.这里当然也就需要我们的interface能完成了。

二、关于interface的使用

关于接口的使用我们这里使用一个登录的例子进行操作,关于不同的登录,实现登录不同,(比如手机短信登录,密码登录,以及扫码登录等等)所以我们在实现登录操作的时候就有了很多种方法。关于不同的方法的实现就可以implement一个interface

1.接口的格式

定义接口:
【public】interface 接口名【extends 父接口名】{}
实现接口:
【修饰符】class 类名 implements 接口名{}

代码例子1

//刚刚新建一个包,查阅资料发现包的创建不能出现关键词,下划线,空格
interface login_interface { 
   
public void login(userlogin user,String code);//接口只能定义方法不能实现
}
//以下的三个类都是对于这个抽象类的实现
class PwdLogin implements  login_interface{ 
   
    @Override
    public void login(userlogin user, String code) { 
   
        //在接口的继承里面必须要把全部的方法都实现了
        System.out.println("pwd login");
        if(user.pwd.equals(code)){ 
   
            System.out.println("登录成功!!");

        }else
            System.out.println("密码错误");
    }
}

class PhoneMsglogin implements login_interface{ 
   
    @Override
    public void login(userlogin user, String code) { 
   
        System.out.println("phone login");
        if(user.pwd.equals(code)) System.out.println("登录成功!!");
        else System.out.println("密码错误!");
    }
}

class  codelogin implements login_interface{ 
   
    @Override
    public void login(userlogin user, String code) { 
   
        System.out.println("code login");
        if(user.pwd.equals(code))
        { 
   
            System.out.println("登录成功!!");
        }
        else System.out.println("密码错误!");
    }
}

Jetbrains全家桶1年46,售后保障稳定

2.用登录方法具体实现

在上面我们创建了三个具体的类去实现这个接口,但是没有体现出他们的具体作用,这里我们创建出一个用户分别使用不同的方法进行登录随后就会有不同的操作进行,可以直接体现interface的作用

代码例子2:

public class userlogin { 
   
    // 属性
     String name;
     int age;
     String pwd;
    /** // 登录方法(如果只有一种登录方法可以直接不用继承该接口的方法就行) public void login(String pwd){ if(pwd.equals (this.pwd)){ System.out.println("登录成功"); }else { System.out.println("登录失败"); } } **/
    // 接口声明的 属性对象名 不能直接实例化
    login_interface loginService;//这不是实例化,就像是一个指针指向这个类的对象

    public void loginServiceLogin(String code){ 
   
        loginService.login(this,code);
    }

     class Manage{ 
   
        public static void main(String[] args){ 
   
            userlogin user = new userlogin();
            user.name = "张三";
            user.age = 18;
            user.pwd = "123456";

            // 配置 登录方式
            PhoneMsgLogin phlogin=new PhoneMsgLogin();
            codelogin clogin=new codelogin();
            PwdLogin pwdLogin = new PwdLogin();
            user.loginService=pwdLogin;

// CodeLogin codeLogin = new CodeLogin();
// user.loginService=codeLogin;

            user.loginServiceLogin ("123456");
            user.loginService=clogin;
            user.loginServiceLogin("123456");
            user.loginService=phlogin;
            user.loginServiceLogin("123456");//直接调用一种方法实现三种不用的方法的使用,这个是实现了程序的多态性
        }
    }

抽象类和接口之间的区别

实际点来说,一个抽象类不能实例化,因为“没有包含足够多的信息来描述一个具体的对象”。但终归属于类,所以仍然拥有普通类一样的定义。依然可以在类的实体(直白点就是能在{}里面)定义成员变量,成员方法,构造方法等。
而对于接口来说接口一般指的就是抽象方法和常量的集合(里面的数据以及方法只能是static和final类型)


总结

以上就是今天要讲的内容,关于interface的用法,我们在使用interface的时候需要的就是理解这个接口是为了实现什么样的方法,比如在java原有的包里面有一个ActionLitener接口,可以实现对于一个按钮的监听(监听器)。这个接口里面只有一个抽象方法就是actionPerformed就是用来实现这个功能的。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/179405.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 手机怎么复制网页上不能复制的文字_如何复制网页上收费文档的文字

    手机怎么复制网页上不能复制的文字_如何复制网页上收费文档的文字们在浏览网页的时候,时常会觉得有的内容不错,想复制下来,却发现有的网页内容不能复制,今天就教大家如何解决这个问题。虽然可以通过禁用脚本或是“查看源文件”,在源文件代码中复制需要的文章。不过复制文章的时候会有很多用不着的符号和代码。这样的操作方法其实都不如使用八爪鱼方便快捷。下面就给大家介绍一下如何利用八爪鱼采集网页上不能复制。步骤一、下载八爪鱼软件并登陆1、打开htt…

    2022年10月13日
    4
  • 矩阵论:向量范数和矩阵范数的区别_矩阵范数的定义

    矩阵论:向量范数和矩阵范数的区别_矩阵范数的定义http://blog.csdn.net/pipisorry/article/details/51030563向量范数0-范数,向量中非零元素的个数。1-范数:,即向量元素绝对值之和,matlab调用函数norm(x,1) 。2-范数:,Euclid范数(欧几里得范数,常用计算向量长度),即向量元素绝对值的平方和再开方,matlab调用函数norm(x,2)。∞-范数:,即所有向量元素绝对值中

    2025年12月8日
    3
  • use mysql命令_mysql命令-use

    use mysql命令_mysql命令-useuse命令可以让我们来使用数据库。use命令格式:use;例如,如果xhkdb数据库存在,尝试存取它:mysql>usexhkdb;屏幕提示:Databasechanged1)use语句可以通告MySQL把db_name数据库作为默认(当前)数据库使用,用于后续语句。该数据库保持为默认数据库,直到语段的结尾,或者直到出现下一个不同的use语句:mysql>USEdb1…

    2022年7月17日
    14
  • Windows XP虚拟机安装全过程(VMware)「建议收藏」

    Windows XP虚拟机安装全过程(VMware)「建议收藏」​1.准备工作VMware没有装上的,可以参考一下之前装win2000的前半部分:博客链接然后电脑要安装一个迅雷,下载链接:迅雷下载链接;最后,就是大名鼎鼎的网站NextItellyou(原msdn我告诉你)的账号啦,链接:网站链接所有这些准备工作都做好之后,就可以开始下一步了~2.下载WindowsXP镜像(非百度网盘)打开NextItellyou官方网站,然后点击WindowsXP;然后点黄色箭头指向的“复制”;然后打开迅雷,它应该就会自动跳出下

    2022年8月16日
    11
  • django的drf_简述django请求生命周期

    django的drf_简述django请求生命周期前言一般我们写完序列化以后,我们就会开始写视图了,drf中我们一般使用CBV的方式,也就是类视图的方式,最基础的我们会使用fromrest_framework.viewsimportAPIVi

    2022年7月31日
    5
  • idea注释模版配置(吐血推荐!!!)[通俗易懂]

    idea注释模版配置(吐血推荐!!!)[通俗易懂]idea注释模版配置idea作为越来越多程序员使用的开发工具,平时的代码注释也非常的关键,下面介绍一下类上注释和方法上注释,方便大家的开发配置,同时也为自己以后配置留一份记录(毕竟每次换环境都需要重新配置一遍)1、新建类的时候自动添加类注释(1)按照上图的提示,找到位置1的FileandCodeTemplates(2)选择右侧的Files选项卡,选择位置2的Class(如果需要设置接口和枚举的注释模版,只需要选择Interface和Enum,按照步骤3配置一下就ok了)(3)在

    2022年9月30日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号