接口:
* 1.狭义:Java中的接口
* 使用interface关键词来声明
* interface 接口名
* 2.广义:相当于一个规则 规范 是需要遵守的
* 接口
* 1.只可以声明 抽象方法(不准确)
* 2.可以声明 变量
* 3.接口只能用来实现(不能继承)
* 4.接口中是没有构造方法的
* 5.接口声明变量 默认是 public static final
* 默认就是静态常量
* 建议:先写全 写熟了再说
* 6.声明抽象方法时 默认是public abstra(可省略)
*
* 接口类怎么运行
* 跟类一样
public static void main(String[] args) {
// 创建 接口 使用多态的形式创建
InterA a = new InterAImpl();
a.fun();
System.out.println(InterA.num);
}
}
// 声明一个接口
interface InterA {
public static final int num = 10;
public abstract void fun();
}
// 接口 使用implements 关键词 实现
// 接口的实现类 类名 一般都以Impl结尾
class InterAImpl implements InterA {
// 实现接口中 抽象方法
@Override
public void fun() {
System.out.println(num);
System.out.println("我是实现类的 fun方法");
}
抽象类与接口的区别:
* 1.使用方法
* 抽象类:继承
* 接口:实现
* 2.成员变量
* 抽象类:可以是常量 变量
* 接口:只能是常量
* 3.成员方法
* 抽象类:可以是 抽象方法 也可以是成员方法
* 接口:只能是重写方法
* 4.构造方法
* 抽象类:有 抽象方法 也可以是成员方法
* 接口:没有
*
* 类与类之间的关系:只允许单继承
* 类与接口的关系:实现的关系 可以多实现
*
* 接口与接口的关系:可以单继承 也可以多继承
public static void main(String[] args) {
Animal jfAnimal = new JFCat();
jfAnimal.eat();
jfAnimal.speak();
//向下转型
JFCat jfCat = (JFCat)jfAnimal;
jfCat.jump();
}
}
// 类与接口的关系
/*interface InterB{
public abstract void fun1();
}
interface InterC{
public abstract void fun2();
}
class TestA implements InterB,InterC{
@Override
public void fun2() {
// TODO Auto-generated method stub
}
@Override
public void fun1() {
// TODO Auto-generated method stub
}
}*/
//接口与接口的关系
interface InterD{
public abstract void fun1();
}
interface InterE{
public abstract void fun2();
}
abstract class Animal{
public abstract void eat();
public abstract void speak();
}
//interface InterFimp implements InterF {
//
//}
class Cat extends Animal{
@Override
public void eat() {
System.out.println("吃猫粮");
}
@Override
public void speak() {
System.out.println("喵喵喵");
}
}
interface InterCat{
public abstract void jump();
}
class JFCat extends Cat implements InterCat{
// 需要实现接口中 的方法
@Override
public void jump() {
System.out.println("我能跳");
}
}