接口与多态

来源:互联网 发布:ida mac 64位 破解版 编辑:程序博客网 时间:2024/05/21 22:50
一.接口
什么是接口:前期理解 可以理解为是一个特殊的抽象类
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来定义


class:用于定义类
interface:用于定义接口
 1,语法:
访问权限修饰符 interface 接口名{
//全局常量
//抽象方法
}
接口中的成员修饰符是固定的
成员变量: public static final
成员函数: public abstract
如果不写 默认会给加上 只要是定义为接口 interface 那么成员的修饰符就是固定的 建议写上


implements: 实现
类与接口的关系 实现


继承:extends


2.特点:
1.接口是一个特殊的抽象类 特殊在"接口中所有的属性都是常量,方法都是抽象的"
2.接口允许多实现 弥补了java在类之间单继承的不足 因为接口中的抽象类没有方法体 实现谁都行 不冲突
3.java中允许单继承 的同时 实现多个接口
4.接口与接口之间 也有关系 接口继承接口 一个接口可以继承多个接口 因为都是抽象的


剪短版:
1.接口可以用来多实现
2.类与接口之间是实现关系 而且类继承一个类的同时 可以实现多个接口
3.接口与接口之间可以有多继承关系
3.接口的好处
它是对外暴露的规则 提高了程序的扩展性
封装 保证了程序的安全性
4.接口的本质

从接口设计的角度而言 接口中定义了一套规则和标准



面向对象三大特征之一 多态
定义:某一类事物的多种存在形态


例如:动物中 猫 狗
猫 c = new 猫();
动物 d = new 猫();
多态的前提
1.父类引用 指向 子类对象
2.必须是类与类之间有关系 要么继承 要么实现
3.子类存在重写
多态的好处
提高了程序的扩展性 作用体现在可以当做形参 可以接收任意子类的对象
多态的弊端 
但是只能使用父类的引用访问父类中的成员
不能使用子类的特有属性和方法 如果想要使用 必须向下转型


对象的向上转型和向下转型
// byte b = 2; int x = b;
//基本数据类型自动提升 体现在了引用数据类型中 向上转型
//强转 向下转型 父类型转成子类型


/*
问:可以这么做么?
Animal a = new Animal();
Cat c = (Cat)a;
错误 不能强行将一个动物转成猫
不能将父类对象 转成子类对象
多态转的是父类引用 指向了自己的子类对象时 该应用可以被提升 也可以被强转
多态至始至终 都是子类对象在做着变化


*/



instanceof
java中instanceof运算符是用来运行时指出对象是否是特定类的一个实例
通过放回一个boolean类型的值来指出

对象 instanceof 类型
结果:
true: 对象是属于这个类型的实例
false: 对象不是属于这个类型的实例
//instanceof 不常用
// 1.当子类有限时
// 2.当传输的类型需要进行其他操作的时候 比如比较


多态的注意事项
1.多态下 对成员方法的调用 编译看左边(父类) 运行看右边(子类)
2.多态下 对成员变量的调用 编译看左边(父类) 运行看左边(父类)
3.多态下 静态成员         编译看左边(父类) 运行看左边(父类)

原创粉丝点击