A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

接口:
     接口就是公共的规范标准Interface   protocol(协议)
         定义格式:
           public interface Demo{   
                   接口内容 ;  
           }
          接口内容:
             java7:
                   1.常量
                     格式:
                            [public][static][final] 数据类型 变量名 = 数据值;
                               
                                注意点:
                                   1.[public][static][final]都是可以选择性省略 要求只要是在接口里面声明的变量 必须得用这三个关键字进行修饰
                                   2.必须对接口中定义的变量进程赋值操作(即初始化操作)
                                   3.软性要求 代码规范 接口里面定义的变量(常量)变量名字要求全部大写 每个单词之间使用下划线连接
                                  
                  
                   2.抽象方法
                        public abstract 返回值类型 方法名(参数列表);
                       注意:[public] [abstract]可以全部省略 也可以选择性的省略任意一个
                 java8:
                   3.默认方法
                    主要功能 就是用来解决接口升级的一个问题
                        格式:
                             [public] default 返回值类型 方法名(参数列表){
                                         方法体;
                                 }
                                 
                                 默认方法 只能在接口中定义 别的地方不能定义
                                 默认方法 调用的时候和成员方法的调用方式一致
                       
                       
                   4.静态方法
                      定义格式:
                             public static void show(){
                                         方法体;
                                 }
                     静态方法是不能被重写的
                         使用方式:
                            不能使用实现类创建的对象调用
                                直接使用接口名.静态方法(参数列表)
                  
                  
                 java9:
                   5.私有方法
                    定义的格式:
                            跟普通的方法相比的话唯一不一样的地方就是修饰符是private 其他的内容都一样
                                 普通的私有方法:
                                      private 返回值类型 方法名(参数列表){
                                                  方法体;
                                          }
                                 普通静态的私有方法
                                           private static 返回值类型 方法名(参数列表){
                                                          方法体;
                                                  }
                                功能:
                                    private修饰的方法只能在本类中使用
                                        可以对本类中重复的内容进行抽取
                  
          接口的基本使用:
             1.接口不能直接用来创建对象使用
                 2.需要创建一个实现类 实现 implements 接口名 重写里面的抽象方法
                 3.使用实现类创建对象 使用对象调用方法
                 注意:实现类必须得覆盖重写接口中的所以的抽象方法 除非该类也是抽象类
        /*       
        在Java 9+版本中,接口的内容可以有:

        1. 成员变量其实是常量,格式:
        [public] [static] [final] 数据类型 常量名称 = 数据值;
        注意:
                常量必须进行赋值,而且一旦赋值不能改变。
                常量名称完全大写,用下划线进行分隔。

        2. 接口中最重要的就是抽象方法,格式:
        [public] [abstract] 返回值类型 方法名称(参数列表);
        注意:实现类必须覆盖重写接口所有的抽象方法,除非实现类是抽象类。

        3. 从Java 8开始,接口里允许定义默认方法,格式:
        [public] default 返回值类型 方法名称(参数列表) { 方法体 }
        注意:默认方法也可以被覆盖重写

        4. 从Java 8开始,接口里允许定义静态方法,格式:
        [public] static 返回值类型 方法名称(参数列表) { 方法体 }
        注意:应该通过接口名称进行调用,不能通过实现类对象调用接口静态方法

        5. 从Java 9开始,接口里允许定义私有方法,格式:
        普通私有方法:private 返回值类型 方法名称(参数列表) { 方法体 }
        静态私有方法:private static 返回值类型 方法名称(参数列表) { 方法体 }
        注意:private的方法只有接口自己才能调用,不能被实现类或别人使用。       
        */                 
        使用接口的时候,需要注意:
                                    1.接口是没有静态代码块或者构造方法的。
                2.一个类的直接父类是唯一的,但是一个类可以同时实现多个接口
                3.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可
                4.如果实现类所实现的多个接口当中,存在重复的抽象方法,那么只需要覆盖重写一次即可
                5.如果实现类锁实现的多个接口当中,存在重复的默认方法,那么实现类一定要对冲突的默认方法进行覆盖重写。
                6.一个类如果直接父类当中的方法,和接口当中的默认方法产生了冲突,优先用父类当中的方法。

    接口的继承关系:
        接口的多实现 一个类可以实现多个接口
                        格式:  public class impl implements InterA,interB,interC...{}
        接口的多继承 子接口可以同时继承多个接口   
                格式:  public interface Inter extends InterA ,interB,InterC{}       

                注意点:
           如果是继承或者是实现的多个接口中有重复的抽象方法 只需要覆盖重写一个即可
                   如果是接口的继承 继承多个接口 接口里面有重复的默认方法 需要在子接口重写默认方法 带关键字 default

  多态:
  
     对象有不同的形态 小明 既是个人又是个学生
     格式:
        多态的条件:
            1.必须得有继承关系
                   2.父类的引用指定子类的对象

               父类  对象名 = new 子类();
                           接口  接口名 = new 实现类();
            
                多态里面
                   访问成员变量的特点:
                        编译看左边 运行也看左边
                               
                   访问成员方法的口诀:
                        编译看左边 运行看右边   (父类对象绝对不会向下查找)
                       
                 
                 向上转型   有类型范围小的数据(子类) 转换成 类型范围大的数据(父类)
                             父类  对象名 = new 子类();
                                         子类  对象名 = new 子类();
                                         
                                         向上转型 类似于基本数据类型的  自动类型转换(数据范围小的数据类型 转换成数据范围大的数据类型  int --> long )
                             向上转型 数据永远是安全的
                 向上转型  
                                         父类  父类对象名 = new 子类();
                                     转换格式:  子类 子类对象名 = (子类)父类对象名;  
                                         向下转型和基本数据类型中的强制类型转换格式是一样的
                                         向下转型的时候存在一些隐患
                                             数据类型的转换异常  ClassCastException 类型转换异常

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马