java基础篇之多态&接口
2017-07-21 17:21
204 查看
面向对象三大特征之一 多态
定义:某一类事物的多种存在形态
例如:动物中 猫 狗
猫 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.多态下 静态成员 编译看左边(父类) 运行看左边(父类)
二、接口
什么是接口:前期理解 可以理解为是一个特殊的抽象类
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来定义
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.多态下 静态成员 编译看左边(父类) 运行看左边(父类)
二、接口
什么是接口:前期理解 可以理解为是一个特殊的抽象类
当抽象类中的方法都是抽象的,那么该类可以通过接口的形式来定义
class:用于定义类
interface:用于定义接口
1,语法:
访问权限修饰符 interface 接口名{
//全局常量
//抽象方法
}
接口中的成员修饰符是固定的
成员变量: public static final
成员函数: public abstract
如果不写 默认会给加上 只要是定义为接口 interface 那么成员的修饰符就是固定的 建议写上
implements: 实现
类与接口的关系 实现
继承:extends
2.特点:
1.接口是一个特殊的抽象类 特殊在"接口中所有的属性都是常量,方法都是抽象的"
2.接口允许多实现 弥补了java在类之间单继承的不足 因为接口中的抽象类没有方法体 实现谁都行 不冲突
3.java中允许单继承 的同时 实现多个接口
4.接口与接口之间 也有关系 接口继承接口 一个接口可以继承多个接口 因为都是抽象的
剪短版:
1.接口可以用来多实现
2.类与接口之间是实现关系 而且类继承一个类的同时 可以实现多个接口
3.接口与接口之间可以有多继承关系
3.接口的好处
它是对外暴露的规则 提高了程序的扩展性
封装 保证了程序的安全性
4.接口的本质
从接口设计的角度而言 接口中定义了一套规则和标准
相关文章推荐
- 再读thinking in java -- 第八章 多态 & 第九章 接口
- 小白学java-基础篇(super、final、抽象类、接口、多态、instanceof、包装类)
- Java基础<七>--->抽象类、接口、内部类、异常等
- 黑马程序员-17-java基础-面向对象(3)-继承、抽象类、接口与多态
- 黑马程序员—【Java基础篇】之继承、抽象及接口
- java总结(之五)-- 类与接口、多态与继承
- Java初学习 - 多态和实现接口的类的对象赋值给接口引用的方法
- java基础(5)-----接口,继承与多态
- 黑马程序员-Java的面向对象(抽象类、接口、内部类和继承、组合、多态)
- 在此论坛第一天 Java 多态 抽象类 接口 final
- Java API —— Set接口 & HashSet类 & LinkedHashSet类
- 【Java 基础篇】【第六课】接口interface
- 学习笔记_毕向东 Java_继承_抽象类_接口_多态 2014.7.13
- JAVA的abstract修饰符 && 接口interface用法
- 黑马程序员 Java面向对象<二> 继承、多态、接口
- JAVA实验三 抽象类的继承和接口的实现 (多态)
- 恶补java(四)——多态、抽象、接口
- Java中接口、多态、instanceof
- 初识JAVA4(抽象类、接口、多态)
- 09-01 Java final,多态,抽象类,接口