J2SE基础:5.面向对象的特性2
Final的使用
final在类之前
表示该类是终于类。表示该类不能再被继承。
final在方法之前
表示该方法是终于方法,该方法不能被不论什么派生的子类覆盖。
final在变量之前
表示变量的值在初始化之后就不能再改变;相当于定义了一个常量。
对象的上溯(上转型)和对象的下溯
上转型对象的特点:
A a = new B();
实例化是B,仅仅只是是A去接收而已。所以仅仅能看到A中定义的属性与方法。
A:不能操作子类新增的成员变量和方法;
B:能够操作子类继承的变量,也可操作子类继承或重写的方法;
假设子类重写了父类的某个方法后,当对象的上转型对象调用这种方法时一定是调用了这个子类重写的方法。
使用上转型对象的优缺点:
缺点:不能操作子类新增的成员变量和方法
长处:
A:上转型对象是实现对象多态的前提条件。B:以牺牲少部分的功能来换代替码设计的最大幅度的优化。
类型的下溯:
假设此时上转型对象想要操作子类新增的方法和属性。能够进行
对象类型的下溯。
下溯成功后,就能够看到自已新增的属性与方法。
类型的上/下溯的注意点:
操作的对象都是针对子类进行上/下的转换。
操作的上/下转型对象之间必需要有继承关系。
重载
当有參数精确匹配时,调用的是精确匹配的方法。
假设没有,寻找參数相应的父类类型。(Object,String,StringBuffer)
重写/上转型对象:一旦用上转型对象的话,方法被子类重写,肯定调用的是
子类重写的方法。
多态
1:什么是多态:
多态就是指父类的某个方法被子类重写时,
能够各自产生自己的功能行为。
2:多态的条件
A:要有继承关系
B:子类必须对父类的方法进行重写
C:父类的引用要指向子类(对象的上转型)。
3:多态的中的父类的引用要指向子类造成了多态的后期绑定。
前期绑定与后期绑定:
前期绑定:编译期间就已经确定其类型。
后期绑定:在执行期间才确定对象类型。
J2SE基础:5.面向对象的特性2的更多相关文章
- J2SE基础:4.面向对象的特性一
面向对象的特性 封装 继承多态 封装: 定义: 通过对象的封装,实现了模块化和信息隐藏. 通过对类的成员施以一定的訪问权限,实现了类中成员 的信息隐藏 注意点: 对象自已该做的一些事情与方法不能交与其 ...
- [.net 面向对象编程基础] (11) 面向对象三大特性——封装
[.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...
- [.net 面向对象编程基础] (12) 面向对象三大特性——继承
[.net 面向对象编程基础] (12) 面向对象三大特性——继承 上节我们说了面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低 ...
- [.net 面向对象编程基础] (13) 面向对象三大特性——多态
[.net 面向对象编程基础] (13) 面向对象三大特性——多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...
- python基础(25):面向对象三大特性二(多态、封装)
1. 多态 1.1 什么是多态 多态指的是一类事物有多种形态. 动物有多种形态:人,狗,猪. import abc class Animal(metaclass=abc.ABCMeta): #同一类事 ...
- python基础(24):面向对象三大特性一(继承)
1. 继承 1.1 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继 ...
- JAVA基础——面向对象三大特性:封装、继承、多态
JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. ...
- Java基础-面向对象第一特性之封装(Encapsulation)
Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...
- 夯实Java基础系列1:Java面向对象三大特性(基础篇)
本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 [https://github.com/h2pl/Java-Tutorial](https: ...
随机推荐
- iOS基础笔试题 - 集锦一
前言 下文转载自https://mp.weixin.qq.com/s?__biz=MzA4ODk0NjY4NA==&mid=454115946&idx=1&sn=c7f1b50 ...
- CF814B An express train to reveries
思路: 模拟,枚举. 实现: #include <iostream> using namespace std; ; int a[N], b[N], cnt[N], n, x, y; int ...
- cocos2dx使用lua和protobuf
为了使游戏开发更加方便快捷,我继续了protobuf在lua下的尝试. socket使用的是cocos2dx集成的websocket. 先说下环境:cocos2d-x-2.2.1 + protobuf ...
- Android 读取asset文件
* * 从Assets中读取图片 */ private Bitmap getImageFromAssetsFile(String fileName) { Bitmap image = null; As ...
- Tcl之Read files for synthesis
The following file is to read all design files into syntehsis tool automatically, like Cadence RTL C ...
- 三维卷积:全景图像Spherical CNNs(Code)
卷积神经网络(CNN)可以很好的处理二维平面图像的问题.然而,对球面图像进行处理需求日益增加.例如,对无人机.机器人.自动驾驶汽车.分子回归问题.全球天气和气候模型的全方位视觉处理问题. 将球形信号的 ...
- Ubuntu-Python2.7安装 scipy,numpy,matplotlib
sudo apt-get install python-scipy sudo apt-get install python-numpy sudo apt-get install python-matp ...
- 6.14 提取第n个分割的子串
问题:从字符串中提取出一个指定的.由分割符隔开的子字符串.create view v as select 'mo,larry,curly' as namefrom t1union allselect ...
- (转)淘淘商城系列——商品搜索功能Dao实现
http://blog.csdn.net/yerenyuan_pku/article/details/72909286 终于进入商品搜索功能的开发中了,本文我来教大家编写实现商品搜索功能的Dao层代码 ...
- AdMob设计工具google web designer
一.google web designer工具中文文档: https://support.google.com/webdesigner?hl=zh-Hans#topic=3227692 我用的版本:应 ...