zoukankan      html  css  js  c++  java
  • java-day09

    接口

      就是一种公共规范标准,只要符合规范标准,就可以大家通用,多个类的公告规范,引用数据类型

    格式

      public interface 接口名称{}

    接口都能定义抽象方法

      public abstract 返回值类型 方法名称();

      修饰符必须是public abstract,但可以省略不写

    使用

      接口不能直接使用,必须有一个实现类来实现该接口

      public interface 接口名称{}

      public 实现类名 implements 接口名称{}

      实现类必须覆盖重写接口所有的抽象方法

    默认方法

      public default 返回值类型 方法名称(参数列表){}  用于解决接口升级问题,会被实现类继承

    静态方法

      public static 返回值类型 方法名称(参数列表){}  不能通过实现类对象调用,通过接口名称直接调用静态方法  接口名称.静态方法()

    私有方法

      抽取一个公共方法,用来解决默认方法间重复代码,但不应该被实现类使用

    普通私有方法

      private 返回值类型 方法名称(参数列表){}

    静态私有方法

      private static 返回值类型 方法名称(参数列表){}

    接口中可以定义成员变量,但必须使用public static final修饰,可省略不写

    接口中的成员变量必须被赋值,应为成员变量有默认值,而它又是被final修饰。

    使用

      接口名称.成员变量名

      建议命名全大写,且用下划线分割

    注意事项

      接口没有静态代码块,或者构造方法

      一个类直接父类只有一个,但一个类可以有多个接口

      如果多接口中有重复命名的抽象方法,在实现类中只需要覆盖重写一次即可

      如果有重复的默认方法,实现类要对冲突的默认方法覆盖重写

      父类与接口的默认方法命名发生冲突,优先使用父类的

      接口的继承是多继承的

    总结  多个父接口中抽象方法重复,没关系,但默认方法需要覆盖重写。

    多态

      一个对象拥有多种形态,父类引用指向之类对象

      父类名 对象名 = new 子类名();  接口名 对象名 = new 实现类名();

    直接访问成员变量

      看等号前是谁,就用谁,没有则向上找

    间接访问成员变量

      看方法属于谁,就有谁,没有则向上找

    成员方法访问

      看new的是谁,优先用谁,没有则向上找

    对象的向上转型

      右侧创建一个子类对象,把它当作父类来看待使用,类似与自动类型转换

      如果向上转型,则无法调用子类特用的方法,所以就需要向下转型

    对象的向下转型,其实是一个还原的动作,将父类对象还原成本来的子类对象,且只能还原成本来的子类对象

    格式

      子类名称 对象名 = (子类名称)父类对象;

    在向下转型前需要使用instanceof关键字来判断

      对象 instanceof 类名称

      返回一个boolean值,判断前面的对象能不能当作后面类型的类型

    final关键字

      代表最终,不可改变

      可以用来修饰一个类,一个方法,一个局部变量,一个成员变量

    当修饰一个类时

      当前类不能被继承,但可以有父类

      一个类如果被final修饰,其中所有成员方法无法被覆盖重写

    当修饰一个方法时

      该方法不能被子类覆盖重写,所以abstract关键字与final关键字不能同时使用

    一旦用final修饰局部变量,就不能进行修改,所以只能赋值一次

    修饰成员变量时

      变量也不可改变,由于成员变量有默认值,所以被final修饰的成员变量一点要被赋值,要么直接赋值,要么通过构造方法赋值

    内部类格式

      修饰符 class 类名{

        修饰符 class 内部类名{}

      }

    内用外,可以随意访问;外用内,需要内部类对象

    定在在一个类中

    如何使用成员内部类

      在外部类方法中,使用内部类,然后再main调用外部类方法

      外部.内部 对象名 = new外部().new内部();

    内部类访问外部类成员变量

      如果重名的话,救用外部类名.this.成员变量名

    局部内部类

      定义在类的一个方法中

    格式

      修饰符 class 类名{

        修饰符 返回值类型 方法名(){

          class 类名{}

        }

      }

    关于修饰符

      外类:public/(default)

      成员内部类:public/protected/(default)/private

      局部内部类:什么都不i额

    如果希望访问所在方法的局部变量,那么局部变量必须是有效final的

    匿名内部类

      如果接口的实现类(或是父类的子类)只需要使用唯一一次,那么可是省略该类的定义,而改用匿名内部类

      接口名称 对象名 = new 接口名称(){

        覆盖重写所有抽象方法

      };

    注意事项

      在创建对象时,只能使用唯一一次

    将class作为成员变量

     

     

     interface作为成员变量

     

     

    interface作为方法参数和返回值类型

     

  • 相关阅读:
    流 例题

    容器集合整理
    容器集合
    容器 集合知识点
    面向对象回顾
    面向对象例题
    Java常用的8大排序算法
    Java中两个动态代理
    为什么synchronized无法禁止指令重排,却能保证有序性
  • 原文地址:https://www.cnblogs.com/324fch/p/11715255.html
Copyright © 2011-2022 走看看