------- android培训、java培训、期待与您交流! ----------
接口
可以认为是一个特殊的抽象类
当抽象类中的方法都是抽象的该类可以通过接口的形式来表现
格式特点
1 接口中常见定义 常量 抽象方法 接口中的成员
2 接口成员有固定修饰
常量 public static final
方法 public abstract
接口不可以创建对象因为是抽象方法
怎样被子类实现
子类对接口中的抽象方法全部覆盖后子类才可以实现实例化否则子类是一个抽象类
接口可以被类多实现
继承类的同时可以实现多接口
接口
是对外暴漏的规则
是程序的功能扩展
可以用来多实现
类-接口 实现关系 类-类 继承关系 接口-接口 继承
功能扩展(体系外加入)
多态
可以理解为事物存在的多种形态
多态是一种OOP特性它使一个对象能够决定在接收到一个方法的调用时用哪个方法实现
多态体现
父类的引用指向了自己的子类对象父类的引用也可以接受
前提类与类之间必须有关系存在覆盖
弊端 只能使用父类引用父类中的成员
强制将父类引用转换成子类类型 向下转型
Cat c = (Cat)a;
向上转型类型提升
Animal a = new Cat();
父类引用指向子类对象该引用可强制提升强制转换
自始至终都是子类对象在变化
多态的应用
简化了代码
在多态中成员的特点
Zi z = new Zi();
Fu f = new Fu();
在编译时期参阅引用型变量所属的类中是否有调用的方法如果有编译通过否则则否
在运行时期参阅对象多数关系是否有调用的方法
总结:成员变量在多态调用时编译看左边运行看右边
在多态中成员变量特点
无论编译或者运行都参考左边引用型变量的所属关系
多态中静态成员函数
无论编译运行都参考左边
abstract class Animal
{
abstract void eat();
}
class Cat extends Animal
{
public void eat()
{
System.out.println("吃鱼");
}
public void catchMouse()
{
System.out.println("抓老鼠");
}
}
class Dog extends Animal
{
public void eat()
{
System.out.println("吃骨头");
}
public void kanJia()
{
System.out.println("看家");
}
}
class DuoTaiDemo
{
public static void main(String[] arge)
{
//Cat c = new Cat();
function(new Cat());
}
public static void function(Animal a)
{
a.eat();
if(a instanceof Cat)
{
Cat c = (Cat)a;
c.catchMouse();
}
else if (a instanceof Dog)
{
Dog d = (Dog)a;
d.kanJia();
}
}
}