Java基础之浅谈接口
前言前几篇文章我们已经把Java的封装、继承、多态学习完了,现在我们开始比较便于我们实际操作的学习,虽然它也是Java基础部分,但是其实入门容易,精通很难。 我认真的给大家整理了一下这些必须学会、了解的知识点。
-下面我们正式进入正题吧<( ︶ ) [GO!] 一、接口1.接口的概念接口:接口并不是类,而是帮助类去实现功能的一种技术。 如果你的类符合某个特定的接口,我就会履行这项服务。 定义接口我们可以使用 interface 关键字 将类声明为实现某个接口可以用 implements 2.什么是实例字段先说字段,什么是字段? 字段是属于类的,它是会用public、private等关键字修饰的。而变量就是我们通常定义的int a这样的,它没有访问控制符; 所以实例字段就是我们构造器中的,也就可以理解为没用构造方法。 3.接口的特点接口中的所有方法都自动是public的,因此在接口中我们可以省略public关键字 Java中接口不会有实例字段,可以将接口看成没用实例字段的抽象类。 接口中的字段总是public static final的 Java中虽然不能够多继承,但是可以用一个类实现多个接口,从而达到了多继承的效果。(这也是接口和抽象类的概念,虽然接口中在JDK8之前是抽象的,但是抽象类只能被继承一个,而接口可以被实现多个) 在接口中现在实现了定义方法内容,但是需要用到default、和static关键字才可以。 在我们类重写接口方法时,我们不可以省略public关键字 二、接口的实际使用根据上面接口的特点,现在我们来演示一下,接口到底是怎么使用的。 public interface InterfaceTest { int a = 0; public static final int b = 0;//public static final可以省略不写 void sum1(); public abstract void sum2();// public abstract可以省略不写 static void test1() { System.out.println("static可以实现在接口中定义方法内容,此方法不推荐具体用法可自行学习,这也是Java8的新特性"); } default void test2() { System.out.println("default可以实现在接口中定义方法内容,并且此方法没必要去类中实现"); } } class Test1 implements InterfaceTest{ @Override public void sum1() { System.out.println("此方法必须在类中去实现"); } @Override public void sum2() { System.out.println("此方法必须在类中去实现"); } } 接口的属性: 接口不是类,所以不可以使用new运算符实例化一个接口。x = new Comparable(); 但是我们可以使用接口去声明一个变量 Comparable x; 我们可以使用接口变量去引用实现了这个接口的类 public static void main(String[] args) { InterfaceTest inter = new Test1();//跟多态差不多 if(inter instanceof InterfaceTest) {//同样可以使用instanceof判断,这个肯定为true了 inter.sum1(); inter.sum2(); inter.test2(); } } 实现多接口的写法: public class Employee extends Person implements Comparable,Collection,... 三、解决默认方法冲突产生原因:一个类继承了另一个类的同时,又实现了一个接口,当此接口于父类都拥有相同的方法时,他就会产生冲突,那么会哪个优先呢?我们来看一下吧 class Father { public void sum1() { System.out.println("我是父亲的sum1"); } public void test2() { System.out.println("我是父亲的test2"); } } class Son extends Father implements InterfaceTest{ @Override public void sum1() {//在我们重写方法是不可以省略public System.out.println("此方法必须在类中去实现,我是儿子sum1"); } @Override public void sum2() { System.out.println("此方法必须在类中去实现"); } public static void main(String[] args) { InterfaceTest inter = new Son(); if(inter instanceof InterfaceTest) { inter.sum1();//经过测试发现,和多态性一样,优先调用子类 inter.sum2(); inter.test2();//经过测试发现,这个default的情况是,父类优先 } } } 最终就是记住"类优先"原则。 四、接口回调如果说父类实现了某个接口,那么子类继承父类时候,自然实现了该接口,没用必要再实现了。 在我刚接触这个" 接口回调 "一次时,我觉得非常的高大上。 其实就是简单的多态应用 假设Com是一个接口,ImpleCom()是该接口的实现类,则 Com c = new ImpleCom(); 在调用方法是仍然和多态一样。可以把实现某一接口的类创建的对象的引用赋值给该接口声明的接口变量----> Com c = new ImpleCom(); ,那么该接口变量 c 就可以调用被类实现的接口方法以及接口提供的default方法或者类重写的default方法。
其实真没啥可说的,就是这个 c 既可以调用从接口那里实现过来的方法,也可以调用自身的方法。
本文来自https://www.cnblogs.com/lx-meteor/p/16100914.html
智能断路器在智慧消防中的应用无论是居家办公或是出游,安全是首要前提,消防安全更是其中必不可少的一环。在电气火灾数量占全年火灾数量比重较大的情况下,如何提高电气火灾的监管与防范力度更显得尤为重要。所谓清醒于事前
十四五配电网规划工作怎么干?配电网直接面向终端用户,是服务民生的重要公共基础设施,也是保证供电质量提高电网运行效率创新用户服务的关键环节。十四五配电网规划作为十四五电力规划的重要组成部分,是贯彻落实贯彻以人民
哪些行业需要实现智慧用电?科技在进步,时代在改变。物联网技术人工智能技术云计算大数据技术等日益成熟,传统依赖人力的电气安全监控管理模式,也正向技术智慧型转变。从人工巡检到科技驱动,很多人都在感慨智慧用电为人
大半年的桌面折腾记录,桌面3。0SHOW入坑了电脑DIY,日常除了喜欢折腾相关的电脑硬件设备,其次就是打造对应放置的桌面了,这里给大家分享下个人上半年的折腾成果,这次桌面的效果,反复折腾优化下来,自我感觉也还是可以的,不
5G赋能开启智慧用电新时代智慧用电是基于大数据的电气火灾隐患排查治理系统,做到了电气火灾隐患提早发现及早治理,实现了从人防到技防的转变,解决了人员少监管难的问题,预防了因电气线路隐患而引起的火灾,从源头上遏
七彩虹CVNB560IGAMING搭联力Q58ITX平台装机展示前言废话港真!对于七彩虹的主板,在这之前完全没有接触过,熟悉把玩过也就是他们家的显卡了,目前的品质及外观设计方面,貌似在国内玩家心中的认可度都还蛮高的,可以说并不逊色于台系厂商吧,
卓文科技智能空开为河北省雄安新区王家寨村提供优质用电服务河北雄安新区规划纲要中指出,要落实安全绿色高效能源发展战略,突出节约智能,打造绿色低碳安全高效智慧友好引领未来的现代能源系统。为落实规划政策,2020年10月10日,国内首个基于风
智能配电箱(智能空开成套)实现智能用电监测智能配电箱(智能空开成套)是基于移动互联与数字断路技术的智能配电系统,对用电配电领域来说是一种新的方式。它的技术特点是安全智慧和节能。智能配电箱解决了继电器分断能力不足的缺点,集漏
智能断路器经常跳闸会是什么原因智能断路器是目前较为先进的保护设备,它具备漏电过流短路欠压过压等保护功能,还具备自动合闸远程操作功能。智能断路器跳闸,可能是以下几种原因。结合实际情况判断,即可了解发现解决故障。原
智能断路器如何做到智能化升级?现代生活中一切都离不开电,配电设备更是相当重要的环节,断路器作为常用的配电设备,无论是在工业农业商业还是日常生活中,只要是用电领域断路器随处可见,随着用电需求的不断增长,传统断路器
不到半年时间,接着折腾优化桌面,再SHOW一次前言废话距离之前展示分享的桌面还没过半年,但这段时间里还是没少折腾桌面,个人觉得变化还是蛮大的,这边再SHOW一次,当然还是一样的桌子和环境,比较大的不同也就是告别了副桌的双屏方案