/*
* 接口定义时,格式特点:
* 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 仔鸡