Java中的接口

关于接口

接口就是多个类的公共规范。

接口是一种引用数据类型,最重要的内容就是其中的:抽象方法。

接口与父子类继承有相似之处,可以把接口中的内容交给“实现类”来实现,接口与父子类相比,更加灵活,一个“实现类”可以多实现多个接口,而在父子类中只能单继承,一个子类只有一个父类。

接口的定义格式

public interface 接口名称{
    //接口方法
}

接口中的内容
   

  • 如果是java7,那么接口中可以包含的内容有:

    1. 常量(必须使用public static final三个关键字修饰,可以省略不写,但是初学者不建议这样做,常量必须有赋值)

    2. 抽象方法(有abstract关键字修饰)

  • 如果是java8,还可以额外包含有:

    1. 默认方法(可以解决接口升级的问题,即已经有了接口的实现类以后,接口升级不会影响已经使用此接口的实现类)
    2. 静态方法
  • 如果是java9,还可以额外包含有:

    1. 私有方法(接口中的私有方法用来作为两个方法的公有方法,解决两个方法之间代码重复的问题。但是这个方法不应该让实现类使用,应该是私有的。有普通私有方法与静态私有方法两种,分别解决多个默认方法之间代码重复的问题与多个静态方法之间代码重复的问题)

接口的使用步骤
   

  1. 接口不能直接使用,必须有一个“实现类”来“实现”接口。

       格式:

public class 实现类名称 implements 接口名称 {
       //....
}
  1. 接口的实现类必须覆盖重写(实现)接口中所有的抽象方法,如果实现类没有全部覆盖重写,那么实现类必须是抽象类。

  2. 创建实现类的对象,进行使用。

实现类可以多实现多个接口

注意事项:
   

  1. 如果实现类实现的多个接口中,有重复的抽象方法,那么只需要覆盖重写一次即可。

  2. 如果实现类实现的多个接口中,有重复的默认方法,那么实现类必须要对重复的默认方法覆盖重写。

  3. 一个类如果直接父类中的方法与接口中的默认方法产生了冲突,优先使用父类当中的方法,父类的优先级大于接口。

接口与接口之间也可以多继承

注意事项:
   

  1. 多个父接口当中的抽象方法如果重复,没关系,因为在子接口当中本就要覆盖重写实现抽象方法。

  2. 多个父接口当中的默认方法如果重复,那么子接口必须进行默认方法的覆盖重写,而且必须要带着default关键字。


更多接口的详细信息可以咨询查找。

ArrayList

Array与ArrayList的区别

数组的长度不可以发生改变,但是ArrayList的长度是可以随意变化的。

关于ArrayList

对于ArrayList来说,用一个尖括号代表泛型。

泛型:就是装在集合当中的所有元素,全都是统一的一种类型。

注意:泛型 只能 是引用类型,不能 是基本类型(byte,short,int,long,float,double,boolean,char)

如果想创建一个基本类型的ArrayList

可以使用基本类型所对应的“包装类”

基本类型 包装类(引用类型)
byte Byte
short Short
int Integer
Long Long
float Float
double Double
Boolean Boolean
char Character

ArrayList的常用方法

public boolean add(E e); 向集合当中添加元素,参数的类型和泛型一致

public E get(int index); 从集合当中获取元素,参数是索引编号,返回值就是对应位置的元素

public E remove(int index); 从集合当中删除元素,参数是索引编号,返回值就是被删除的元素

public int size(); 获取集合的尺寸长度,返回值就是集合当中包含的元素的个数

Random

关于Random

Random类位于java.util.Random包下,可以用来生成随机序列。

有两种常用用法:

Random() 用时间作为种子产生随机序列,随机性性强,一般产生的序列不相同。

Random(seed) seed是产生随机序列的种子,只要是同一种子,每次产生的随机序列都相同。

代码举例

1.第一种方法产生随机序列

Random r = new Random();
int a = nextInt(10);

10代表产生的随机序在0到10之间(不包括10),即[0,10)。


2.第二种方法产生随机序列

Random r = new Random(10);
int a = nextInt(10);

每次产生的随机序列都相同。


具体更多用法可以查询API

Scanner

关于Scanner

Scanner的作用类似于输入函数,可以把键盘的输入传递给需要用的变量。

Scanner的使用步骤

1.导包

import java.util.Scanner;

2.创建

Scanner sc = new Scanner(System.in);

tips:System.in表示从键盘输入。

3.使用

String str = sc.next();

String str = sc.nextLine();

对于字符串,有上述两种常用用法,对于第一种,遇到空格就结束,对于第二种遇到回车才结束。

String str = sc.nextInt();

对于int类型,常用用法如上所写。


更多详细用法请查询API

请我喝杯咖啡吧~

支付宝
微信