接口生活中有很多接口,例如:USB接口、电源接口、Type-c接口等等;一个接口,对应一个接口相应的设备。程序中的接口:一种标准,一种规范,一系列抽象方法的集合。
接口的特点
接口不能实例化接口中的方法都是抽象方法,但是jdk8之后,还提供了默认方法:default接口中的属性默认添加publicstaticfinal;常量即,所有常量名大写例:intNUM;和publicstaticfinalintNUM一致。子类实现接口必须实现接口中的所有的抽象方法。子类可以实现多个接口,即多实现接口可以继承接口
栗子
USB接口
public interface USB {
//抽象方法
public abstract void speak();
//默认方法
public default void listen() {
System.out.println();
}
//抽象方法
void read();
void write();
}
Transfer接口
实现类
public class Upan implements USB,Transfer {
@Override
public void read() {
System.out.println('U盘正在读取数据');
}
@Override
public void write() {
System.out.println('U盘正在写入数据');
}
@Override
public void tran() {
System.out.println('U盘正在传输数据');
}
//listen()是默认方法,可以重写,也可以不重写
@Override
public void listen() {
}
}
电脑类
public class Computer {
//操作USB接口中读的方法
void readUpan(USB usb){
System.out.println('正在读取U盘');
usb.read();
}
//操作USB接口中写的方法
void writeUpan(USB usb){
System.out.println('正在写入U盘');
usb.write();
}
//操作Transfer接口中的方法
void tranUpan(Transfer transfer){
System.out.println('正在传输U盘');
transfer.tran();
}
}
测试类
public class Test {
public static void main(String[] args) {
//创建电脑类对象
Computer computer=new Computer();
USB usb=new Upan();
Transfer transfer=new Upan();
computer.readUpan(usb);
computer.writeUpan(usb);
computer.tranUpan(transfer);
}
}
练习分析创建一个形形状的父类,在定义一个计算面积的抽象方法,然后定义一个圆形类和矩形类分别去继承这个形状类,并重写其中的抽象方法创建一个打印接口,定义一个打印形状的方法,定义黑白打印机和彩色打印机分别去实现打印这个接口。要求:通过选择一个打印机,用来打印面积
方法一
//定义图形抽象类
public abstract class Statue {
abstract void area(int a, int b, int r, double Π);
}
//矩形类继承图形类
class Chang extends Statue {
@Override
void area(int a, int b, int r, double Π) {
System.out.println('矩形面积为:' + a * b);
}
}
//圆形类继承图形类
class Yuan extends Statue {
@Override
void area(int a, int b, int r, double Π) {
System.out.println('圆形面积为:' + r * r * Π);
}
}
打印接口
黑白打印机
public class HB implements Printer {
@Override
public void show(Statue statue) {
System.out.println('这是一台黑白打印机');
//给area()方法里面传入参数
statue.area(5,5,5,3.14);
}
}
彩色打印机
public class CS implements Printer {
@Override
public void show(Statue statue) {
System.out.println('这是一台彩色打印机');
statue.area(3,3,3,3.14);
}
}
测试类
public class Test {
public static void main(String[] args) {
//创建黑白打印机对象
HB hb=new HB();
//创建矩形对象
Statue chang=new Chang();
//创建圆形对象
Statue yuan=new Yuan();
//通过控制台输入来操作
Scanner str=new Scanner(System.in);
System.out.println('请问要打印矩形(1)还是圆形(2)?');
int num=str.nextInt();
if (num==1){
hb.show(chang);
}else if (num==2){
hb.show(yuan);
}else {
System.out.println('请输入正确的数字');
System.exit(0);
}
}
}
方法2
//定义图形抽象类和抽象方法
public abstract class Statue {
protected abstract void cacl();
}
//继承抽象类
class Chang extends Statue{
//重写抽象方法cacl()
@Override
protected void cacl() {
System.out.println('下面开始计算矩形面积');
//从控制台输入数据
Scanner str=new Scanner(System.in);
System.out.println('请输入矩形的长');
int a=str.nextInt();
System.out.println('请输入矩形的宽');
int b=str.nextInt();
int s=a*b;
System.out.println('矩形面积为:'+s);
}
}
//继承抽象类
class Yuan extends Statue{
//重写抽象方法cacl()
@Override
protected void cacl() {
System.out.println('下面开始计算圆形面积');
Scanner str=new Scanner(System.in);
System.out.println('请输入圆的半径');
double r=str.nextInt();
double Π=3.14;
double s=Π*r*r;
System.out.println('圆的面积为:'+s);
}
}
打印接口
黑白打印机实现类
public class HbPrinter implements Print {
@Override
public void printer(Statue statue) {
System.out.println('这是一台黑白打印机');
statue.cacl();
}
}
彩色打印机实现类
public class CsPrinter implements Print {
@Override
public void printer(Statue statue) {
System.out.println('这是一台彩色打印机');
statue.cacl();
}
}
测试类
public class Test {
public static void main(String[] args) {
//创建主人类对象
HbPrinter hb=new HbPrinter();
CsPrinter cs=new CsPrinter();
//创建图形对象
Statue statue1=new Chang();
Statue statue2=new Yuan();
Scanner str=new Scanner(System.in);
System.out.println('请输入你想使用的打印机 黑白打印机1/彩色打印机2');
int nums=str.nextInt();
if (nums==1){
System.out.println('你选择的是黑白打印机');
System.out.println('请输入你打印的图形 矩形1/圆形2');
int num=str.nextInt();
if (num==1) {
hb.printer(statue1);
}else if (num==2){
hb.printer(statue2);
}else {
System.out.println('请输入正确的数字');
System.exit(0);
}
}else if (nums==2){
System.out.println('你选择的时彩色打印机');
System.out.println('请输入你打印的图形 矩形1/圆形2');
int num=str.nextInt();
if (num==1) {
hb.printer(statue1);
}else if (num==2){
hb.printer(statue2);
}else {
System.out.println('请输入正确的数字');
System.exit(0);
}
}else {
throw new RuntimeException('请输入正确的打印机编号');
}
}
}
测试类代码冗余较大,主要就是从控制台输入来计算形面积
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点