接口实际上是一种特殊的抽象类
接口中所有的方法都是抽象方法(抽象类不可以创建对象)
接口中的成员变量只能是 public static final 类型的。
接口使用interface声明
类只能进行单继承,接口可以支持多实现·
接口同样具有多态性
接口可以把很多不相关的内容进行整合
特点:
1.接口中所有方法都是 抽象方法,都是公开的
2.接口所有方法都是全局静态常量
接口的实现
相关代码
Gold
package 接口;
public class Gold implements Valubale{
//必须要实现抽象方法
public void getMoney() {
System.out.println("黄金可以换钱");
}
}
Valubale接口
package 接口;
/**
能继承接口的只能是接口
接口和类只能是实现关系 implements
**/
public interface Valubale { //使用interface声明,已经不再是类了
//接口所有方法都是抽象方法,可以省略abstract
//接口所有内容都是公开的,公共的
void getMoney(); //接口所有的方法的都是抽象类,不可以有正常的方法
}
动物类型
接口
Protectable
package 接口;
public interface Protectable {
void cang();
}
Valubale接口同上
定义animal类
package 接口;
public class Animal {
public void eat() {
System.out.println("动物会吃");
}
}
定义熊猫类
package 接口;
public class Panada extends Animal implements Protectable, Valubale{
//类可以继承一个类实现多接口
@Override //重写
public void eat() {
// super.eat();
System.out.println("熊猫吃竹子");
}
@Override
public void cang() {
System.out.println("把熊猫藏到山里");
}
@Override
public void getMoney() {
System.out.println("熊猫很珍贵");
}
}
测试
package 接口;
public class Client {
public static void main(String[] args) {
// Gold g = new Gold();
// Valubale g =new Gold(); //接口一样具有多态性
// g.getMoney();
Panada pd = new Panada();
Animal ani = new Panada(); //向上转型
Protectable pro = new Panada(); //向上转型
Valubale vb = new Panada(); //向上转型
//熊猫的角度
pd.eat();
pd.cang();
pd.getMoney();
//站在动物的角度只能吃
ani.eat();
//站在保护的角度只能藏
pro.cang();
}
}
输出
熊猫吃竹子
把熊猫藏到山里
熊猫很珍贵
熊猫吃竹子
把熊猫藏到山里
接口的继承
继承名叫father的接口
接口可以实现多继承
标记接口
标记接口是没有任何方法和属性的接口.它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。
标记接口作用:简单形象的说就是给某个对象打个标(盖个戳),使对象拥有某个或某些特权。
package 接口.接口练习;
//这是一个标记接口
//父接口
public interface father {
}