接口
接口可以理解为一种特殊的类,由全局成量和公共的抽象方法所组成。
类是一种具体实现体,而接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部数据,也不关心这些类里方法的实现细节,它只规定这些类里必须提供某些方法。
接口定义
和类定义不同,定义接口不在使用class关键字,而是使用interface关键字。
接口定义的基本语法
[修饰符]interface接口名
{零个到多个常量定义。。。
零个到多个抽象方法的定义。。。。
}
接口中的方法只能是抽象方法,总是使用,即使定义时不添加publicabstract修饰符。系统也会自动加上。
接口使用
一个类可以实现一个或多个接口,实现接口使用implements
关键字。java中一个类只能继承一个父类,是不够灵活的,通过实现多个接口可以做补充。
继承父类实现接口语法
[修饰符]class类名extends父类implements接口接口2
{类体部分//如果继承了抽象类,需要实现继承的抽象方法;要实现接口的抽象方法。}
如果要继承父类,继承父类必须在实现接口之前
接口的使用
接口与类的区别
接口不能用于实例化对象。接口没有构造方法。接口中所有的方法必须是抽象方法。接口不能包含成员变量,除了static和final变量。接口不是被类继承了,而是要被类实现。接口支持多继承
练习题
练习题中国特色社会主义的体制中有这样的现象:地方省政府要坚持党的领导和按
照国务院的指示进行安全生产。请编写一个java应用程序描述上述的体制现象。
要求如下:
该应用程序中有一个“党中央”接口:CentralPartyCommittee,该接口中
有个“坚持党的领导”方法:voidpartyLeader()
该应用程序中有一个“国务院”抽象类:StateCouncil,该抽象类中有个“安
全生产”的抽象方法:abstractvoidsafetyInProduction()
该应用程序中有一个“省政府”类:Province,该类继承StateCouncil抽象
类并且实现CentralPartyCommittee接口;在实现partyLeader()方法时输出“我们
各省人民一定坚持党的领导!”;在重写safetyInProduction()方法时输出“我们各
省人民一定按照国务院的指示进行安全生产!”。
该应用程序中有一个主类E,在主类E的main方法中创建Province类的对
象,来测试Province类的功能。
程序代码:
void partyLeader( );
复制代码
}
}
public void partyLeader() {
System.out.println('我们各省人民一定坚持党的领导!');
}
@Override
public void safetyInProduction() {
System.out.println('我们各省人民一定按照国务院的指示进行安全生产!');
}
复制代码
}
CentralPartyCommittee centralPartyCommittee=new Province();
centralPartyCommittee.partyLeader();
}
复制代码
}
练习题:按如下要求编写Java程序:
编写接口InterfaceA,接口中含有方法voidprintCapitalLetter()。
编写接口InterfaceB,接口中含有方法voidprintLowercaseLetter()。
编写非抽象类Print,该类实现了接口InterfaceA和InterfaceB。要求printCapitalLetter()方法实现输出大写英文字母表的功能,printLowercaseLetter()方法实现输出小写英文字母表的功能。
再写一个主类Test,在main方法中创建Print的对象并赋值给InterfaceA的变量a,由变量a调用printCapitalLetter方法,然后再创建Print的对象并将该对象赋值给InterfaceB的变量b,由变量b调用printLowercaseLetter方法。
void printCapitalLetter();
复制代码
}
void printLowercaseLetter();
复制代码
}
@Override
public void printCapitalLetter() {
System.out.println('ZXCVBNMASDFGHJKLQWERTYUIOP');
}
@Override
public void printLowercaseLetter() {
System.out.println('zxcvbnmasdfghjklqwertyuiop');
}
复制代码
}
public static void main(String[] args) {
InterfaceA a=new Print();
a.printCapitalLetter();
InterfaceB b=new Print();
b.printLowercaseLetter();
}
复制代码
}
数组
声明数据语法:数据类型[]数组名:
或者:数据类型数组名[]
:int[]scores;
分配空间简单的说,就是指定数组中最多可存储多少个元素
语法:
数组名=new数据类型[数组的长度]scores=newint;
赋值
分配空间后就可以向数组放数据了,数组中元素都是通过下标来访问的。例如scores数组中存放学生成绩
scores[0]=89;
scores=79;
处理数组中数据
我们可以对赋值后的数据进行操作和处理,如获取并输出数组中元素的值Systeout.print(scores[0]);
习题练习
用数组打印abc
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);
复制代码
解析:
packagetuxing;这句是打包语句,
publicclasslingxing这是声明一个公有的类
publicstaticvoidmain(String[]args)这是主函数,Java程序运行的入口
inta[]={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是否小于i++是每次运行后i自动加1
s+=a[i];是求int数组a的五个元素的和,{}后面的{}省略)
Systeout.print(s);这是在控制台打印出s的值
如果是失球平均值紧要换成Systeout.print(s/;解析完。
例子:
// 反序输出{我爱你}
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]);
复制代码
文章为作者独立观点,不代表观点