/* * 接口定义时,格式特点: * 1、接口中常见定义:常量,抽象方法 * 2、接口中的成员都有固定修饰符 * 常量:public static final * 方法:public abstract * 记住:接口中的成员都是public的 * * 接口是不可以创建对象的,因为有抽象方法 * 需要被子类实现,子类对接口中的抽象方法全部覆盖后,子类才可以实例化 * 否则子类是个抽象类 * * 接口可以被类多实现,也是对多继承不支持的转换形式 * (接口可以多继承,如果所有父接口里面同名函数的返回值相同) * * */ interface Inter { public static final int NUM = 3; public abstract void show(); } interface InterA{ public abstract void method(); } interface A extends InterA{ } class Test1 implements Inter,InterA { public void show() { System.out.println("123"); } public void method(){} } public class InterfaceDemo { public static void main(String agrs[]) { Test1 t = new Test1(); System.out.println(t.NUM); System.out.println(Test1.NUM); System.out.println(Inter.NUM); } }
上面的输出结果都是3,Test1.NUM和Inter.NUM应为NUM是静态的,所以可以被类名直接调用
举例子:
abstract class Student{ abstract void study(); void sleep(){ System.out.println("sleep"); } } interface Smoking{ void Smoke(); } class ZhangSan extends Student5 implements Smoking{ void study(){} public void Smoke(){} } class LiSi extends Student5{ void study(){} } public class InterfaceDemo2 { }
上面的例子中,学生一定会学习和睡觉,但是不一定会抽烟,所以如果把抽烟直接放在学生类中是不行的,所以利用接口,让张三继承学生类实现抽烟接口,这样张三就又是学生,又会抽烟。而李四只继承学生不实现抽烟,那他就不会抽烟。这样定义更符合现实生活。
---------------------By 仔鸡