JAVA学习笔记——接口

概念:

  • 接口(Interface)是一种规范或协议(Protocal),是由常量和抽象方法组成的特殊类,是对抽象类的进一步抽象,用于克服 Java 单继承的缺点。
  • 例如:每个厂商在生产鼠标的时候,鼠标的接口遵循了 USB 接口统一标准,使鼠标的接口变成了 USB 通用接口,因此用户买回来的鼠标插人计算机的 USB 接口后可直接使用。

接口的定义:

  • 在接口的定义部分,可以定义 public 接口或友好接口,接口体的访问控制权限修饰符只有 public。

  • 接口可以实现多继承,即一个接口可以继承多个父接口中的方法和常量。

  • 接口体只包含常量属性和抽象方法,不能包含变量和具体的方法。

  • 接口中的常量属性必须被赋值,隐式地声明为 public、static 和 fnal(3 个修饰符可省略),被存储在该接口的静态存储区域内。

  • 接口中的方法隐式地声明为 public、static(两个修饰符可省略)。

  • 一般定义接口常用的是方法二

    //方法一

    public interface Pauselnterface { //使用interface 定义一个pauselnterface的接口

    public static final int MAX=10; //定义常量

    public abstract voidpause(); //定义方法

    }

    //方法二

    public interface Pauselnterface {

    int MAX=10;
    public void pause();

    }

接口的继承:

java 复制代码
interface Extrawage{

double calAskForLeave();
double calWorkOver();

}

interface Basewage{

double calBasewage();

}

interface Wage extends Basewage, Extrawage {

double totalwage();

}

代码分析1:

定义了两个接口,分别是Extrawage和Basewage 这两个接口是接口Wage的父类接口

而作为 Extrawage和Basewage的子类接口,接口Wage继承了两个父类接口的方法。

接口的使用:

java 复制代码
class 类名称 implements 接口A ,接口B {

.................................

}

举例:

题目:

一、父接口:

1.BaseWage 接口:

计算基本工资的接口定义计算基本工资的抽象方法

  • (baseWage): h:8000 , m:5000 , l:3000

2.ExtraWage 接口:

计算额外工资的接口定义计算请假扣除工资的抽象方法

  • (askForLeave)h:100,m:60,l:30*定义计算加班补贴工资的抽象方法
  • (workover)h:150,m:100,l:80

二、子类接口

Wage 接口:承上面两个父接口

定义计算最终工资的抽象方法(totalwage)

三、实现类:
WorkMan 类:

实现 Wage 接口4成员变量:

月份(int),工资级别(String),请假天数(int),加班天数(int)

java 复制代码
class WorkMan implements Wage{

//WorkMan自己的成员变量
int month;
String level;
int askForLeaveDay;
int workOverDay;

//实现方法接口的方法,因为Wage继承了父类的接口,所有当前这个类也必须继承Wage的接口
//Wage继承了父类接口,所有必须实现父类接口,而当前的类继承了Wage的接口
//所有当前的类也必须继承Wage所要实现的接口

public double calBasewage() {

if (level.equals("high"))
   return 8000;
else if(level.equals("middle"))
   return 5000;
else 
   return 3000;

}

public double calAskForLeave(){

if (level.equals("high"))
   return 100*askForLeaveDay;
else if(level.equals("middle"))
   return 80*askForLeaveDay;
else 
   return 50*askForLeaveDay;

} 

public double calWorkover() {

if (level.equals("high"))
   return 150*workOverDay;
else if(level.equals("middle"))
   return 100*workOverDay;
else 
   return 80*workOverDay;

}

public double totalwage(){

int all=month*salary-leaveSalary+overSalary;
System.out.println("总工资为:"+al1);

}

}
相关推荐
m0_571957581 小时前
Java | Leetcode Java题解之第543题二叉树的直径
java·leetcode·题解
并不会1 小时前
常见 CSS 选择器用法
前端·css·学习·html·前端开发·css选择器
龙鸣丿1 小时前
Linux基础学习笔记
linux·笔记·学习
魔道不误砍柴功3 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2343 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
Nu11PointerException3 小时前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
闲晨3 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
亦枫Leonlew4 小时前
三维测量与建模笔记 - 3.3 张正友标定法
笔记·相机标定·三维重建·张正友标定法
考试宝5 小时前
国家宠物美容师职业技能等级评价(高级)理论考试题
经验分享·笔记·职场和发展·学习方法·业界资讯·宠物
测开小菜鸟5 小时前
使用python向钉钉群聊发送消息
java·python·钉钉