Java接口与数组

2,584 阅读5分钟

接口

接口可以理解为一种特殊的类,由全局成量和公共的抽象方法所组成。

类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某些方法。

接口定义

和类定义不同,定义接口不在使用class关键字,而是使用interface关键字。

接口定义的基本语法

[修饰符] interface 接口名

{ 零个到多个常量定义。。。

零个到多个抽象方法的定义。。。。

}

接口中的方法只能是抽象方法,总是使用,即使定义时不添加 public abstract 修饰符。系统也会自动加上。

接口使用

一个类可以实现一个或多个接口,实现接口使用implements

关键字。java中一个类只能继承一个父类,是不够灵活的,通过实现多个接口可以做补充。

继承父类实现接口语法

[修饰符] class 类名 extends 父类 implements 接口1 ,接口2

{ 类体部分//如果继承了抽象类,需要实现继承的 抽象方法;要实现接口的抽象方法。 }

如果要继承父类,继承父类必须在实现接口之前

接口的使用

接口在使用过程中,还经常与匿名内部类配合使用 匿名内部类就是没有名字的内部类 多用于关注实现而不关注实现类的名字

接口与类的区别

  • 接口不能用于实例化对象。
  • 接口没有构造方法。
  • 接口中所有的方法必须是抽象方法。
  • 接口不能包含成员变量,除了 static 和 final 变量。
  • 接口不是被类继承了,而是要被类实现。
  • 接口支持多继承

练习题

练习题一: 中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按

照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。

要求如下:

(1)该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中

有个“坚持党的领导”方法:void partyLeader()

(2)该应用程序中有一个“国务院”抽象类:StateCouncil,该抽象类中有个“安

全生产”的抽象方法:abstract void safetyInProduction()

(3)该应用程序中有一个“省政府”类:Province,该类继承StateCouncil抽象

类并且实现CentralPartyCommittee接口;在实现partyLeader()方法时输出“我们

各省人民一定坚持党的领导!”;在重写safetyInProduction()方法时输出“我们各

省人民一定按照国务院的指示进行安全生产!”。

(4)该应用程序中有一个主类E,在主类E的main方法中创建Province类的对

象,来测试Province类的功能。

程序代码:

public interface CentralPartyCommittee {

void partyLeader( );

}

public abstract class StateCouncil {

abstract void safetyInProduction();

}

public class Province extends StateCouncil implements CentralPartyCommittee{

public void partyLeader() {
    System.out.println("我们各省人民一定坚持党的领导!");
}

@Override
public void safetyInProduction() {
    System.out.println("我们各省人民一定按照国务院的指示进行安全生产!");
}

}

public class E { public static void main(String[] args) {

CentralPartyCommittee centralPartyCommittee=new Province();
centralPartyCommittee.partyLeader();
}

}

练习题: 按如下要求编写Java程序:

(1)编写接口InterfaceA,接口中含有方法void printCapitalLetter()。

(2)编写接口InterfaceB,接口中含有方法void printLowercaseLetter()。

(3)编写非抽象类Print,该类实现了接口InterfaceA和InterfaceB。要求printCapitalLetter()方法实现输出大写英文字母表的功能,printLowercaseLetter()方法实现输出小写英文字母表的功能。

(4)再写一个主类Test,在main方法中创建Print的对象并赋值给InterfaceA的变量a,由变量a调用printCapitalLetter方法,然后再创建Print的对象并将该对象赋值给InterfaceB的变量b,由变量b调用printLowercaseLetter方法。

public interface InterfaceA {

void printCapitalLetter();

}

public interface InterfaceB {

void printLowercaseLetter();

}

public class Print implements InterfaceA,InterfaceB {

@Override
public void printCapitalLetter() {
    System.out.println("ZXCVBNMASDFGHJKLQWERTYUIOP");

}

@Override
public void printLowercaseLetter() {
    System.out.println("zxcvbnmasdfghjklqwertyuiop");

}

}

public class Test {

public static void main(String[] args) {

  InterfaceA a=new Print();
  a.printCapitalLetter();
  InterfaceB b=new Print();
  b.printLowercaseLetter();

}

}

数组

1.声明数据 语法:数据类型[] 数组名:

或者:数据类型 数组名[]

:int[] scores;

2.分配空间 简单的说,就是指定数组中最多可存储多少个元素

语法

数组名 = new 数据类型[数组的长度] scores = new int[5];

3.赋值

分配空间后就可以向数组放数据了,数组中元素都是通过下标来访问的。例如scores数组中存放学生成绩

scores[0] = 89;

scores[1] = 79;

4.处理数组中数据

我们可以对赋值后的数据进行操作和处理,如获取并输出数组中元素的值 System.out.print(scores[0]);

习题练习

用数组打印abc

public class abc { public static void main(String[] args) {

    String[] sun;
    sun = new String[3];
    sun[0]="A";
    sun[1]="B";
    sun[2]="C";
    System.out.println(sun[0]);
    System.out.println(sun[1]);
    System.out.println(sun[2]);

} }

运算数组的和与平均值

public static void main(String[] args) {
    int[] sun;
    sun = new int[3];
    sun[0] = 10;
    sun[1] = 20;
    sun[2] = 30;

    int shun = 0;

    for (int i = 0; i < sun.length; i++) {
        shun = sun[i] + shun;
    }
    System.out.println(shun);
    System.out.println(shun/sun.length);

解析:

package tuxing;这句是打包语句,

public class lingxing 这是声明一个公有的类

public static void main(String[] args)这是主函数,Java程序运行的入口

int a[]={2,4,5,7,5},i,s;这里声明了一个int型数组a并为其制定元素值,还声明了两个int型变量i,s;

s=0;为s付初始值0;

for(i=0;i<5;i++)for循环语句i=0是为上面声明的int型变量i付初始值,i<5是判断i是否小于5,i++是每次运行后i自动加1

s += a[i]; 是求int数组a的五个元素的和,(因为for循环内只有一条语句所以可以吧for(){}后面的{}省略)

System.out.print(s);这是在控制台打印出s的值

如果是失球平均值紧要换成System.out.print(s/5); 解析完。

例子:

    // 反序输出{我爱你}

    char[] love;
    love = new char[3];
    love[0] = '我';
    love[1] = '爱';
    love[2] = '你';
    for (int i = love.length - 1; i >= 0; i--) {
        System.out.print(love[i]);