1、接口:interface关键字
    (1)语句定义格式:

 interface 接口名{}

(2)接口是如何实现的呢?
        接口不能直接实例化,需要一个关键字供其他类实现该接口:implements
        使用多态的形式进行实现,由具体的子类进行实例化,其实这是多态的一种,叫做接口多态。

(3)也可以用一个抽象类去实现。

到目前为止,我们学过了三种多态的表现实现:
        (1)具体的类中的多态  (最后才是具体类的多态)
        (2)抽象类中的多态    (其次是抽象多态)
        (3)接口中的多态     (今后大数据开发最常见的是接口多态)
    
    
2、接口中成员的特点:
    (1)成员变量:
        只能是常量,并且是静态的。 JVM在真正运行之前会自动补齐修饰符:public static final

(2)构造方法:
        接口中没有构造方法。所以直接实现接口的类都继承Object类,完成构造方法的初始化。

(3)成员方法:
        接口中的方法只能是抽象方法。  JVM在真正运行之前会自动补齐修饰符:public abstract

//创建一个接口
interface Animal{public static final int age = 30;  //默认修饰符: public static final,可以不写//    Animal(){       //不能有构造方法
//
//    }public abstract void show();  //默认修饰符: public abstract,可以不写
}//定义猫类,继承Object类(Object是所有类的父类),实现Animal接口
class Cat extends Object implements Animal{@Overridepublic void show() {System.out.println("猫会跳舞");}
}//测试类
public class InterfaceDemo {public static void main(String[] args) {//接口类多态Animal animal = new Cat();animal.show();}
}

注意:
        (1)当一个具体的类实现接口的时候,必须实现接口中所有的抽象方法。
        (2)当一个抽象类实现接口的时候,可以选择不实现接口中的方法,也可以选择性的实现。

类与类,类与接口,接口与接口的关系
        (1)类与类:
               存在的是继承关系,只能进行单继承,不可以进行多继承,但是可以是多层继承。
        (2)类与接口:
               存在的是实现关系,可以是单实现,也可以是一次性实现多个接口,也可以在继承一个类的同时,实现多个接口。
        (3)接口与接口:
               存在的是继承关系,可以进行单继承,也可以进行多继承。

interface Inter1{ }interface Inter2{  }interface Inter3 extends Inter1,Inter2{       //接口可以继承多个接口}public class Demo extends Object implements Inter1,Inter2{   //类可以在继承一个类的同时实现多个接口
}

3、将来我们更多的面向接口开发会将代码进行分类开发,这样会提高我们开发效率和排错效率。
     通常情况下,会在一个包里分4层:
        bean: 一般存放的是将来要new的实体类。
        controller: 一般是数据的入口类。
        dao: 具体对数据做操作的地方,放在dao层,这一层一般情况下,都是对数据库做操作的。
        service: 一般在这里面放的是接口,和实现类。

4、方法的形式参数是引用数据类型时:
    (1)类:当类作为方法的形式参数时,实际需要的是该类的对象。
    (2)抽象类:当抽象类作为方法的形式参数时,实际需要的是该类子类实现对象的地址值,利用多态的形式创建。
    (3)接口:当接口作为方法的形式参数时,实际需要的是该接口的实现类对象的地址值,利用接口多态的方式创建。

//创建一个抽象的人类
abstract class Person {public abstract void study();}//创建一个人类2接口
interface Person2 {public abstract void playGame();}//创建一个学生类继承人类,实现人类2接口
class Student extends Person implements Person2 {@Overridepublic void study() {System.out.println("好好学习天天向上");}@Overridepublic void playGame() {System.out.println("天天玩英雄联盟");}}//创建一个Demo类
class StudentDemo {// 1) 当看到一个方法的参数是一个类的类型时,实际传的是该类对象的地址值public void fun(Student stu) {     //Student stu = new Student();stu.study();}// 2) 当看到一个抽象类作为参数的类型时,实际需要的是该类子类实现对象的地址值,利用多态的形式创建public void fun2(Person person) {   //Person person = new Student();person.study();}// 3) 当看到一个方法的参数类型是一个接口的时候,实际上需要的是该接口的实现类对象的地址值,利用接口多态的方式创建public void fun3(Person2 person2) {  //Person2 person2 = new Student();person2.playGame();}}//测试类
public class StudentTest {public static void main(String[] args) {//创建Demo类对象StudentDemo stuDemo = new StudentDemo();// 1) 类作为形参Student stu = new Student();stuDemo.fun(stu);// 2) 抽象类作为形参//Person p = new Student();    //第一种方式   多态的形式//stuDemo.fun2(p);stuDemo.fun2(new Student());   //第二种方式   链式编程// 3) 接口作为形参//Person2 p = new Student();      //接口多态的形式//stuDemo.fun3(p);stuDemo.fun3(new Student());}
}

5、方法的返回值是引用数据类型时:
    (1)类: 当一个类作为方法的返回值时,实际返回的是该类对象的地址值。
    (2)抽象类: 当一个抽象类作为方法的返回值时,实际返回的是该抽象类的子类对象。
    (3)接口: 当一个接口作为方法的返回值时,实际返回的是实现该接口的类的对象。

//定义一个抽象类 -- 人类
abstract class Person {public abstract void study();}//定义一个玩游戏接口
interface PlayGame {public abstract void playLol();}//创建一个学生类, 继承人类,实现接口玩游戏
class Student extends Person implements PlayGame {@Overridepublic void study() {System.out.println("好好学习天天向上");}@Overridepublic void playLol() {System.out.println("天天玩英雄联盟");}}//创建一个Demo类
class StudentDemo {// 1) 当看到方法的返回值是一个类的类型时,实际返回的是该类对象的地址值。public Student fun() {//Student s = new Student();     //第一种方法//return s;return new Student();            //第二种方法}// 2) 当看到方法的返回值是一个抽象类的类型时,需要返回的是该抽象类的子类对象public Person fun2() {//Person p = new Student();      //第一种方法//return p;return new Student();             //第二种方法}// 3) 当看到方法的返回值是一个接口的类型时,需要的是实现该接口的类的对象public PlayGame fun3() {//PlayGame pg = new Student();//return pg;return new Student();}}//测试类
public class StudentTest {public static void main(String[] args) {//创建Demo类对象StudentDemo stuDemo = new StudentDemo();// 1) 方法Student做返回值Student stu = stuDemo.fun();stu.study();// 2) 抽象类Person做返回值Person p = stuDemo.fun2();   //Person p = new Student();p.study();// 3) 接口PlayGame做返回值
//        PlayGame pg = stuDemo.fun3();
//        pg.playLol();//链式编程stuDemo.fun3().playLol();}
}  

6、package、import、class它们三个之间有没有顺序呢?
      package: 到达的路径,所在文件的路径,它最终以包结束。    (在最前面)

import: 导入外界你想要使用的类,它最终以你想要导入的那个类/.java结束。    (在package与class之间)
           要想导入某一包下所有的类: .* (开发不推荐)
           只要当你需要导入大于30个类的时候,可以考虑 .*

class: 表示定义一个类,java的最基本的单位    (在import后面,即最后)

7、访问权限修饰符:
                   同一类下    同一包子类中,其他类     不同包的子类      不同包的其他类
    public             √                     √                                    √                           √
    protected       √                      √                                    √
    默认的           √                      √
    private           √
    (√ 代表可以访问)
    
    常见的修饰符组合:
        (1)成员变量:public static final
        (2)成员方法:
            1) public abstract
            2) public static
            3) public final

大数据 -- java基础8 接口特点和用法相关推荐

  1. 【全集】大数据Java基础

    课程介绍 本课程是由猎豹移动大数据架构师,根据Java在公司大数据开发中的实际应用,精心设计和打磨的大数据必备Java课程.通过本课程的学习大数据新手能够少走弯路,以较短的时间系统掌握大数据开发必备语 ...

  2. 大数据java基础吗?

    大数据必备 关于大数据基础知识,以前浪尖写过一篇文章,也多次在 知识星球里分享过经验. 具体学习内容,可以参看如下文章: 入门大数据必读 这个可以看到做大数据的话java是必需品,因为基本所有的大数据 ...

  3. 大数据 -- java基础16 网络编程 TCP UDP

    1.网络编程的三要素:(1)IP地址(2)端口号(3)协议 2.IP地址 : 网络中计算机唯一标识. (1)IP地址在计算机中存储的时候是由二进制的形式进行存储的:IP:192.168.7.42 十进 ...

  4. 【01.23】大数据 -- JAVA基础 P15-P24

    复习: 注释:再生续重解释说明的文字 单行注释,多行注释,文本注释 计算机常量:整数.小数.字符.字符串.布尔.空 进制:二进制–0b 八进制–0 十六进制–0x 变量:先定义后使用,先赋值后使用,在 ...

  5. 大数据Java基础第十二天作业

    第一题:HashMap内部实现原理 HashMap存的是key => value 对的集合,每一对就是一个entry(条目),key和value存的都是对象的引用.key不能存重复的值,key的 ...

  6. 【大数据Java基础-JAVA 数据结构04】java常用类(四)比较器以及其他类

    比较器 1.Java比较器的使用背景: Java中的对象,正常情况下,只能进行比较:== 或 != .不能使用 > 或 < 的 但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需 ...

  7. 大数据Java基础之集合

    欢迎关注公众号: 11-1 Java集合框架概述 11-2 Collection接口方法 11-3 Iterator迭代器接口 11-4 Collection子接口之一:List接口 List实现类之 ...

  8. 大数据Java基础第十九天作业

    第一题:简单的URL获取资源下载 import java.net.URL; import java.net.URLConnection;import java.io.InputStream; impo ...

  9. 大数据Java基础一

    DataType -------------  基本数据类型   100 int  1.2   1.byte short int long float double   2.boolean[true, ...

最新文章

  1. HTML5做手机站页面字体显示很小的解决方法
  2. python树莓派编程_python树莓派编程
  3. [振动力学]期中复习
  4. java游戏怎么设置背景色_java-将背景色设置为JButton
  5. mysql存储引擎 索引优化_MySQL存储引擎,索引及基本优化策略
  6. 转:复杂网络分析总结
  7. 推荐系统实践:从多领域优化到AutoML框架
  8. 数据结构可视化工具(在线,动态生成,用过都说好!)
  9. 解决请求筛选模块被配置为拒绝包含的查询字符串过长的请求
  10. VLOOK Markdown 主题包和增强插件
  11. 【UWB定位】 - DWM1000模块调试简单心得 - 3
  12. qcnfa435_【路由知识小课堂番外篇】支持MU-MIMO技术设备一览表(2017.9.25第一版)...
  13. 2020年4大安全会议及论文
  14. [分析力学]解题思路 - 拉格朗日方程
  15. MT6737/MT6737T/MT6737M处理器参数差异分析资料
  16. 【c#】获取DGV单元格对象方法dgv按钮列的使用介绍
  17. html如何删除网页边框,如何从HTML表中完全删除边框
  18. 10Bootstrap5徽章
  19. TensorFlow入门之二:tensorflow手写数字识别
  20. lombok 不生效

热门文章

  1. VIP邮箱登录入口有哪些?2022年邮箱会员如何注册?
  2. RobotFramework 的 关键字
  3. 三星的净利润大跌与其多项业务均面临中国企业的冲击有关
  4. 普通家用4G路由器和工业4G路由器有什么区别
  5. altium designer设计电路板全流程
  6. 加拿大西蒙弗雷泽大学裴健教授当选ACM SIGKDD新一届主席
  7. 数据治理新法案6月即将发布,数据行业会被颠覆吗?
  8. 每日练习之字符串函数模拟实现
  9. MASM32开发COM组件【二】
  10. java 匿名类 构造方法_Java中接口式的匿名内部类的构造方法