今日
接口
含义
宏观:规则 微观:功能
使用步骤
1.定义 2.使用
定义
大概就是一种特殊的类,里面都是全局常亮和抽象方法
语法: 访问权限修饰符 interface 接口名{ } 组成: 公共静态常亮 公共静态方法 公共抽象方法 default修饰的普通方法 注意: 接口中属性默认使用public static final修饰 接口中的方法默认使用publicabstract修饰
public interface Fly { //定义了一个接口名为Fly的接口 //接口中的属性默认使用public static final修饰 String STR02 = "字符串"; //定义字符串常亮 public static void method01(){ //接口中可以定义公共静态方法,public可以不写 } //接口中可以定义公共抽象方法,public abstract可以省略 public abstract void method02(); //接口中不能定义代码块和静态代码块 //接口中没有构造函数,即接口不能直接创建对象 }
创建接口对象
因为接口没有构造函数,所以不能直接创建接口对象 可以间接创建
写一个类,实现接口方法
class A implements Fly{ //重写接口中的抽象方法 @Override public static void method01(){ } @Override public static void method02(){ } }
通过该类创建接口对象
Fly fly = new A(); //此时fly中就是接口对象
使用
情况1:接口使用接口 多继承:一个接口可以继承多个接口 语法: 访问权限修饰符 interface 子接口名 extends 父接口名,父接口名...{ } 注意: 不能继承父接口的静态方法,其他方法均可继承
interface A{} interface B{} interface C{} interface D extends A,B,C{} //接口可以集成于多个父类接口
情况2:类使用接口 多实现:一个类可以实现多个接口 关键字: implements 实现 语法: 访问权限修饰符 class 子类名 extends 父类名 implement 父接口1,父接口2...{ } 注意: 1.一个类可以实现多个接口 2.子类要么重写接口提供的所有抽象方法,要么子类也是抽象方法 3.子类对象可以转换为多个实现的接口对象 4.一个接口可以被多个类实现
interface A{ void method1(); } interface B{ void method2(); } interface C{} class D implements A,B,C{ //一个类可以实现多个接口 public void method1() { 方法体 } //重写接口中所有的抽象方法 public void method2() { 方法体 } } class Test{ //测试类 public static void main(String[] args){ //D就是子类,其实我感觉叫实现对象更好,D实现了ABC的接口方法 } }
接口的特殊使用
常亮接口
概念:接口中只有的常亮的接口称为常亮接口 public interface NetType{ int OK_NET_01 = 200; int ERROR_NET_01 = 404; int ERROR_NET_02 = 503; int ERROR_NET_03 = 303; }
接口回调
概念:接口对象回来调用接口方法
在Java的层面简单的说一下接口回调:现有一个接口A,和它的实现类A1,和另外一个有接口A引用的类B,因为类B中有接口A的引用,在B执行完方法后,可以通过接口A的引用,告诉A执行完成了这个方法.由于A是一个接口,所以具体接收执行完成这个方法在它是实现类A1中体现.
作业
1,整理笔记
2,晨写未完的写完
3,如何定义一个接口?
4,接口中可以定义什么?
5,如何使用接口?语法格式分别是什么?
6,鸟会飞,飞机会飞,超人会飞,小明要上天,用接口编写 提示:飞是一种功能 7,小明抽烟, 抽烟需要点火,打火机点火,火柴点火,煤气灶点火 提示:点火是一种功能 8,计算机与键盘,鼠标,U盘案例
9,按钮案例或台灯案例
10,ATM(附加题) 用户类 属性: 账号 密码 余额 昵称
银行类 属性: 名称 存储用户的容器:数组 记录用户数量的变量 方法: 注册 1,输入账号 2,输入密码 3,确认密码 4,输入昵称 5,判断账号是否存在 6,判断两次密码是否一致 7,创建用户对象 8,将对象存入用户数组中 9,用户数量++ 10,提示注册成功 11,回到一级菜单 登录 1,输入账号 2,输入密码 3,判断账号密码是否匹配 4,进入二级菜单 返回值:登录的用户对象 存钱(用户对象) 1,输入存款金额 2,改变余额 3,显示成功 取款(用户对象) 1,输入取款金额 2,改变余额 3,显示成功 查询余额(用户对象) 1,获取余额 2,显示余额 转账(用户对象) 1,输入收款账号 2,输入转账金额 3,判断收款账号是否存在 4,判断转账金额是否正确 5,修改本对象余额 6,修改收款账号对象余额 7,显示成功 环境类 new 银行对象(); 死循环 欢迎 显示一级菜单(登录,注册) 输入选项 登录 用户对象 对象 = 使用银行对象调用登录方法 判断对象不等于null 进入二级菜单 注册 其他 提示输入错误
注意: boolean 变量 = 字符串或字符串变量1.equals(字符串或字符串变量2); 作用:判断字符串1与字符串2内容是否相同,返回值为true表示相同,false不相同