学习java接口知识

//一个类最多只能有一个直接的父类。但是有多个间接的父类。  java是单继承。

class ye_01{
    String name;
}
class fu_01 extends ye_01{}
class zi_01 extends fu_01{}

public class Interface {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        zi_01 zi= new zi_01();
        zi.name="bebe";
        System.out.println(zi.name);
    }
}

以上问题和java单继承相违背,那么就需要用接口来解决。

接口:拓展功能的。
接口的定义格式:

interface 接口名{
    }

实现接口的格式:

class  类名 implements 接口名{
    }

如下代码:

interface A { // 接口A,
    // 成员变量
    public static final int i = 10;
    // 成员函数
    public void print();
}

public class Interface_02 {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Interface_02 interface_02 = new Interface_02();
        interface_02.print();
    }
    // 实现接口中的方法
    public void print() {
        System.out.println("这个是接口中的print方法...");
    }
}

接口要注意的事项 :
    1. 接口是一个特殊的类。
    2. 接口的成员变量默认的修饰符为: public static final 。那么也就是说接口中的成员变量都是常量。
    3. 接口中 的方法都是抽象的方法,默认的修饰符为: public abstract。
    4. 接口不能创建对象,使用implements引用。
    5. 接口是没有构造方法的,因为接口中的变量已经初始化了,没有必要有构造方法。
    6. 接口是给类去实现使用的,非抽象类实现一个接口的时候,必须要把接口中所有方法全部实现。

然后我们看看怎么解决带橡皮的铅笔的问题:

//普通的铅笔类
class Pencil{
    String name;
    public Pencil(String name){
        this.name = name;
    }
    public void write(){
        System.out.println(name+"沙沙的写...");
    }
}

//橡皮接口
interface Eraser{
    public void remove();
}

//带橡皮的铅笔
class PencilWithEraser extends Pencil implements Eraser {
    public PencilWithEraser(String name){
        super(name);
    }
    public void remove(){
        System.out.println("涂改,涂改....");
    }
}

class Demo8
{
    public static void main(String[] args)
    {
        //System.out.println("Hello World!");
        PencilWithEraser p = new PencilWithEraser("2B铅笔");
        p.write();
        p.remove();
    }
}

接口的作用:
    1. 程序的解耦。    (低耦合)--接口最重要的优势
    2. 定义约束规范。(项目组长和项目组长的责任)--次重要
    3. 拓展功能。--最基本的

例如开发一个网站:

每个模块都会有增、删、查、改;

每个项目都需要后期的维护(不断优化代码、优化功能);【社会招聘-2天的适应期就开始干活了】

看网站代码的技巧:只看一个模块即可,因为大项目一般大家用的都是共同模块。

/*
 * 需求:在现实生活中有部分同学在学校期间只会学习,但是有部分学生除了学习外还会赚钱。
 *  interface (定义接口)
 *  implements (实现接口)
 *
 * */

//普通的学生类
class Student{
    String name;
    public Student(String name){
        this.name = name;
    }
    public void study(yunshenggw.cn/){
        System.out.println(name+"好好学习");
    }
}

//挣钱是学生拓展的功能---定义在接口上
interface Money{
    public void makeMoney();
}

//会挣钱的学生
class MoneyStudent extends Student implements Money{
    public MoneyStudent(String name){
        super(name);
    }
    public void makeMoney(){
        System.out.println(name+"好好挣钱,然后交学费!");
    }
}

public class Interface_03 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Student s = new Student("李金华");
        s.study();
        //s.makeMoney();

        MoneyStudent m = new MoneyStudent("孙双双");
        m.study();
        m.makeMoney();
    }
}

类与接口之间的关系:实现的关系

package test_01;
/*
类与接口之间关系: 实现关系。

类与接口要注意的事项:
    1. 非抽象类实现一个接口时,必须要把接口中所有方法全部实现。
    2. 抽象类实现一个接口时,可以实现也可以不实现接口中的 方法。
    3. 一个类可以实现多个接口 。
    疑问: java为什么不支持多继承,而支持了多实现呢?

    class A{
             public void print(www.tianjiuyule178.com ){
             System.out.println("AAAAAA");
             }
           }

    class B{
             public void print(baihuiyulegw.com){
             System.out.println("BBBBBB");
             }
           }
    class C extends A ,B{

            }

    new C().print();   //调用之后就会很尴尬,因为有冲突

    答案: 接口是调用自己实现的那一个就可以,不存在冲突。而继承是使用父类的方法,可能会发生冲突;

    接口与接口之间关系: 继承关系。
    接口与接口之间要注意事项:一个接口是可以继承多个接口的。

*/
interface Ab{
    public void print();
}

interface Ac extends Ab{     //Ac继承了Ab
    public void getArea(www.yunsengyule.com);
}

//abstract class ANimal implements Ab,Ac{
//    public void print(){
//        System.out.println(" 实现 Ab 接口");
//    }
//    public void getArea(){
//        System.out.println(" 实现 Ac 接口");
//    }
//
//}

public class Interface_04 implements Ac{

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Interface_04 interface_04= new Interface_04();
        interface_04.getArea();
        interface_04.print();

    }
    public void print(www.gouyiflb.cn){
        System.out.println(" 实现 Ab 接口");
    }
    public void getArea(www.yscylept.com){
        System.out.println(" 实现 Ac 接口");
    }

学习java接口知识的更多相关文章

  1. 学习Java的知识体系路线(详细完整版,附图加目录)

    将网上的Java学习路线图进行归纳囊括,方便以后学习时弥补自身所欠缺的知识点,也算是给自己一个明确的学习方向.至于第一阶段,即JavaSE的基础,这里不给出. 第二阶段 技术名称 技术内容 数据库技术 ...

  2. AJPFX学习Java函数知识总结

    函 数:为了提高代码的复用性,可以将其定义成一个单独的功能,该功能的体现就是java中的函数.函数就是体现之一. java中的函数的定义格式:         修饰符 返回值类型 函数名(参数类型 形 ...

  3. Java底层知识学习:Bytecode and JMM

    最近在跟着耗子哥的程序员练级指南学习Java底层知识,结合<深入理解Java虚拟机>这本书在看,写笔记,看资料,成长中…… 目前看完了第二章JMM和各内存区OOM的情况 一篇图文并茂介绍字 ...

  4. Java基础知识(壹)

    写在前面的话 这篇博客,是很早之前自己的学习Java基础知识的,所记录的内容,仅仅是当时学习的一个总结随笔.现在分享出来,希望能帮助大家,如有不足的,希望大家支出. 后续会继续分享基础知识手记.希望能 ...

  5. 如何学习java?Java基础知识点分享

    面对未知的行业,人们的第一反应应该是:拒绝踏入.因为学习真的是一个痛苦的过程.想要真正了解一个行业,熟知一个行业,并熟练掌握某一技术,是真的需要时间和精力的.在学习Java基础知识期间,千锋小编疯狂为 ...

  6. java基础知识回顾之---java String final类普通方法

    辞职了,最近一段时间在找工作,把在大二的时候学习java基础知识回顾下,拿出来跟大家分享,如果有问题,欢迎大家的指正. /*     * 按照面向对象的思想对字符串进行功能分类.     *      ...

  7. 如何高效的学习Java开发

    IT 行业的变化快是众人皆知的,需要持续去学习新的知识内容.但是,往往我们工作之后,经常发现学习的东西很少了,学习效率非常低,感觉自己到了一个瓶颈期,久而久之,就演变成『一年工作经验,重复去用十年』的 ...

  8. 振鹏学习Java的第二天!

    一.今日收获 1.了解了eclipse的具体使用方法. 2.学习了Java程序设计完全手册的第一章内容,明白了相关知识. 3.通过看哔哩哔哩的java的教程视频了解了Dos命令及java的变量和常量. ...

  9. 学习android学习必备的java基础知识--四大内部类

    学习android必备的java基础知识--四大内部类 今天学习android课程,因为我的主专业是JAVA,但是兴趣班却有这其他专业的同学,学习android 需要具备一些java的基础知识,因此就 ...

随机推荐

  1. python 自定义模块的发布和安装

    [学习笔记] 自定义模块 使用的是pycharm 说白了就是.py文件都可以作为模块导入,像定义一个文件 名字为Mycode __all__ = ["add","sub& ...

  2. 微信h5 video的问题

    https://blog.csdn.net/hf123lsk/article/details/78920211

  3. HTML文档命名规则

    HTML文档是展示Web前段开发工程师成果的最好表示方式,为了便于文档规范化管理,在编写HTML文档时,必须遵循HTML文件命名规则. HTML文档命名规则如下: (1)文档的扩展名为htm或者htm ...

  4. 荣耀5.0以上手机(亲测有效)激活xposed框架的经验

    对于喜欢搞机的朋友而言,大多时候会使用到xposed框架及其种类繁多功能强悍的模块,对于5.0以下的系统版本,只要手机能获得Root权限,安装和激活xposed框架是非常简便的,但随着系统版本的不断迭 ...

  5. (详细)华为荣耀4X CHE-TL00H的usb调试模式在哪里打开的步骤

    每当我们使用PC通过数据线链上安卓手机的时候,如果手机没有开启usb开发者调试模式,PC则没能成功读到我们的手机,有时,我们使用的一些功能较强的工具好比之前我们使用的一个工具引号精灵,老版本就需要打开 ...

  6. Socket 通讯原理

    Socket是什么呢? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后 ...

  7. 文件去除git版本控制

    git的版本控制是由其文件中的 .git文件来进行控制,但是这个文件一般情况是隐藏的. 想去除git的版本控制,有两种方式. 1.可以直接将其中的.git文件找出并删除 2.还可以通过命令的方式来操作 ...

  8. 查看CPU使用率

    rem 如果wmi服务(服务名为Winmgmt)坏掉了,需要到system32\webm目录下执行如下注释的命令 rem for %i in (*.dll) do RegSvr32 -s %i rem ...

  9. 数据库原理 - 序列5 - 事务是如何实现的? - Undo Log解析

    本文节选自作者书籍<软件架构设计:大型网站技术架构与业务架构融合之道>.作者微信公众号:架构之道与术.公众号底部菜单有书友群可以加入,与作者和其他读者进行深入讨论.也可以在京东.天猫上购买 ...

  10. Docker-Linux环境安装

    不同服务器操作系统安装命令不同,例如centOS默认用yum,Ubuntu可能默认用apt-get.这里推荐一种安装方式,通过下载shell脚本 https://get.docker.com,会检测操 ...