接口的定义
接口是一种约定的规范,是多个抽象方法的集合,仅仅定义了应该有哪些功能,本身不实现功能,至于每个功能是怎么实现的,交给实现类完成
接口中的方法都是抽象方法,不实现功能,体现了规范和实现相分离的思想,
耦合度:表示组件之间的依赖关系,依赖关系越多,耦合性越强,组件之间的独立性差,在开发中提倡的是降低耦合性
接口和接口之间的继承关系
接口是一个特殊的类
public interface 接口名{
//抽象方法
}
public interface AInterface{
//接口中的所有方法都是公共抽象的方法
public void showInfo();
void test();
//推荐使用前两种
public abstract void print();
}
接口可以继承,支持多继承,中间用逗号分割
接口和类之间的实现关系
接口中的方法都是抽象的,没有方法体,不能够创建对象,所以需要类要去实现接口,并实现设置接口中的方法,这个类也叫作实现类
public class 类名 implements 接口{
}
实现类必须实现接口中的所有抽象方法
实现类可以实现多个接口,用implements关键字,通过逗号分割
总结:
1.接口是一种约定,实现类必须实现接口中所有的方法,经常说接口约定了实现类应该具备的能力
2.一个接口可以被多个类实现
3.实现类可以继承父类,也可以同时实现接口,继承在前,实现在后
4.接口是一种引用数据类型,可以声明变量,并引用所有该接口的实现类
main
Iwalkable walkable = null;
walkable = new Frog();
//或者合起来写一行
使用接口类声明变量的意义在于引用的实现类究竟具不具备接口所需要的能力,而不关心对象是谁
多态的操作
继承关系,是一种 is A 关系,子类是父类的一种特殊情况,例如dog is a animal
Dog dog = new Dog();
Cat cat = new Cat();
Animal a = null;//a是编译时类型
//animal引用狗实例
a = new Dog();//a是运行时类型
//animal引用猫类型
a = new Cat();//a是运行时类型
多态:
1.编译类型和运行类型不同时就会产生多态,多态表示一个对象的多种状态
2.多态简单来说就是一个对象的多种形态
3.同一引用类型(父类),由于引用的实例不同(new dog/ new cat),对同一行为(shut)产生的结果不同,结果呈现多种状态/形态
多态产生的条件:
1.继承
2.必须有重写
3.多态是建立在重写/实现的基础上的
编译时类型只能够自己定义的方法,不能够看到运行时定义的方法.
多态的形式:
1.父类类型的对象引用子类的实例(父引子)
父类 变量名 = new 子类;
变量名.重写的方法();
2.接口类的变量引用其实现类实例(接口引实现)
接口 变量名 = new 实例类;
变量名.方法();
多态对象调用方法问题
先判断shut方法在不在父类中,父类中没有,报错,找到的话,再看子类有没有重写,如果在子类中找到,运行子类方法,此时产生多态.如果没找到,运行父类的方法,这种时候不产生多态
引用类型的类型转换
自动类型转换
强制类型转换:把父类类型对象转换成子类类型对象,强转的时候一定要注意结合实际类型
instanceOf判断是不是某一个类的实例