接口:
· interface
书写格式:public interface 接口名 { }
特性:
1.接口不可以直接创建对象
2.接口可以直接定义静态常量属性(默认为static final来修饰属性)
3.接口中的方法可以定义为抽象方法(用abstract来修饰,可省略),且没有方法体
public interface Check {
void check();
}
4.接口中还可以定义静态方法,以及默认方法(default修饰)
public interface Check {
// void check();
static void login(){
}
default void check(){
}
}
接口的实际意义在哪?
首先我们要知道:
1.类是相对于对象抽象的,类本身的方法是具体的,属性是抽象的。
2.接口的方法是抽象的。
那么就会出现一个神奇的现象:用类 + 接口即可实现对一类事物的完全抽象!
是不是很神奇?看到这你还有些不明白的话,
我来举个例子:
比如说:有个动物类,它内部有个方法叫“ 吃 ”,那么我们可以用子类来继承动物类,
比如说:老虎类继承动物类,它的方法“ 吃 ”重写为“吃肉”,牛类继承动物类,它的方法重写为“吃草”,这些我们已经知道了,先放这不看。
那如果我有类叫食人花(众所周知食人花吃肉,具备“吃”这个行为),这时候问题来了:我能用食人花来继承动物类得到“ 吃 ”这个方法吗?显然不可以,食人花是植物!
这时候接口的作用就体现出来了:我们不妨将“ 吃 ”这个行为抽象为一个接口,让所有生物都可以来继承,这样是不是就实现了对一类事物的完全抽象!
思想有了,我们不妨来写一些代码来强化一下:
我们都知道:我们登陆一个软件的时候,是不是会有很多种登录方式来选择?这时候我们就可以将登录方式来抽象为一个接口,来实现对登录的抽象!
首先就是接口声明(格式详情见最上面)
其中抽象方法check()表示检验登陆方式
public interface Check {
void check();
}
其次呢就是登录类
public class Login {
private Check check;
public void setCheck(Check check) {
this.check = check;
}
public void login(){
check.check();
}
}
这边我创建了两个子类继承接口,分别是qq和微信
public class weixin implements Check{
@Override
public void check() {
System.out.println("微信登录");
}
}
public class qq implements Check{
@Override
public void check() {
System.out.println("qq登录");
}
}
最后就是我们用户操作类了
public class Manager {
public static void main(String[] args) {
Login login = new Login();
login.setCheck(new weixin());
login.login();
}
}
这边我传的对象是weixin类的对象,所以输出结果自然就是微信登陆
总结:
前段时间学习接口,最近用到的时候发现自己已经忘了好多,于是又重新复习了一边接口的知识点,总的来讲,
接口的方便性:
1. 减少代码的书写
2. 提高了代码扩展性。
3. 在团队合作中,代码的规范性得到了保障
接口对于Java来讲是很重要的一环,在实际工作中,很大一部分都是类+接口构成的代码包,来直接进行应用。
ps.一起加油努力学啊!