Java接口(以角色创建项目为例)
1.接口定义类
·接口不是类,而是希望符合这个接口的类满足的需求(类比为图纸)
·接口命名格式public interface XxxService—表示定义了一个依赖于Xxx类的接口
·接口主体格式:返回值类型+方法名+(参数);
注意:
(1)接口中所有方法自动是public方法,所以声明方法时不必强调public关键字
(2)接口绝不会是实例字段,不需要提供方法体,即无括号
package service;
import model.Role;
import java.util.ArrayList;
//接口定义类
public interface RoleService {//定义了一个依赖于Role类的接口
//接口命名格式XxxService,以Service结尾的名称代表接口
//接口的定义只需要了解方法的返回值类型、方法参数、方法的功能(在方法名中体现)
//接口不是类,是对希望符合这个接口的类的一组需求
//接口中所有方法自动是public方法,所以声明方法时不必强调public关键字
//接口绝不会是实例字段,提供实例字段和方法实现的任务由实现接口的类完成(如Role类)
//主体格式:返回值类型+方法名+(参数);(接口中所有方法自动是public方法)默认不需要方法体(即不需要大括号)
//添加角色
void addRole(Role role);
//获取所有的角色
ArrayList<Role> getRoles();
}
2. 接口实现类
·接口实现类—具体编写接口中的功能,本质也是类(class)
·接口实现类申明格式:public + class + XxxServiceImpl + implements + XxxService + {功能代码块}
·必须要添加接口定义的方法,且方法签名(方法名、返回值类型、参数)应该完全一致
·接口定义的方法都是public,所以实现类的方法修饰符应该是public
package Implement;
import model.Role;
import service.RoleService;
import java.util.ArrayList;
//接口实现类——具体编写接口中的功能,本质也是类(class)
//接口实现类申明格式:public + class + XxxServiceImpl + implements + XxxService + {功能代码块}
public class RoleServiceImpl implements RoleService {//表示实现RoleService接口
//必须要添加接口定义的方法,且方法签名应该完全一致
//接口定义的方法都是public,所以实现类的方法修饰符应该是public
//角色数据库,相当于储存角色的功能
private static ArrayList<Role> ROLES = new ArrayList<>();
//将角色添加入角色数据库
public void addRole(Role role) { ROLES.add( role ); }
//获取所有的角色,故返回数据库
public ArrayList<Role> getRoles() { return ROLES; }
}
3.接口实例化
·接口实例化目的是调用接口中的方法
·通常在test类中进行接口实例化
package test;
import Implement.RoleServiceImpl;
import model.Role;
import service.RoleService;
import java.util.ArrayList;
public class RoleServiceTest {
public static void main(String[] args) {
//接口实例化,目的是调用接口中的方法
//实例化名称一般是将接口名称的第一个大写字母改为小写
RoleService roleService = new RoleServiceImpl();//RoleServiceImpl()本质也是构造函数
Role role1 = new Role();
role1.setName( "admin" );
role1.setDesc( "系统管理员" );
roleService.addRole( role1 );//调用addRole方法,在roleService中添加角色
Role role2 = new Role();
role2.setName( "design" );
role2.setDesc( "设计师" );
roleService.addRole( role2 );
Role role3 = new Role();
role3.setName( "dev" );
role3.setDesc( "开发者" );
roleService.addRole( role3 );
ArrayList<Role> roles = roleService.getRoles();
Role aimRole = roles.get( roles.size()-1 );
System.out.println(aimRole.getName()+" : "+aimRole.getDesc());
}
}