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的更多相关文章

  1. J2SE基础:4.面向对象的特性一

    面向对象的特性 封装 继承多态 封装: 定义: 通过对象的封装,实现了模块化和信息隐藏. 通过对类的成员施以一定的訪问权限,实现了类中成员 的信息隐藏 注意点: 对象自已该做的一些事情与方法不能交与其 ...

  2. [.net 面向对象编程基础] (11) 面向对象三大特性——封装

    [.net 面向对象编程基础] (11) 面向对象三大特性——封装 我们的课题是面向对象编程,前面主要介绍了面向对象的基础知识,而从这里开始才是面向对象的核心部分,即 面向对象的三大特性:封装.继承. ...

  3. [.net 面向对象编程基础] (12) 面向对象三大特性——继承

    [.net 面向对象编程基础] (12) 面向对象三大特性——继承 上节我们说了面向对象的三大特性之一的封装,解决了将对同一对象所能操作的所有信息放在一起,实现统一对外调用,实现了同一对象的复用,降低 ...

  4. [.net 面向对象编程基础] (13) 面向对象三大特性——多态

    [.net 面向对象编程基础] (13) 面向对象三大特性——多态 前面两节,我们了解了面向对象的的封装和继承特性,面向对象还有一大特性就是多态.比起前面的封装和继承,多态这个概念不是那么好理解.我们 ...

  5. python基础(25):面向对象三大特性二(多态、封装)

    1. 多态 1.1 什么是多态 多态指的是一类事物有多种形态. 动物有多种形态:人,狗,猪. import abc class Animal(metaclass=abc.ABCMeta): #同一类事 ...

  6. python基础(24):面向对象三大特性一(继承)

    1. 继承 1.1 什么是继承 继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类. python中类的继承分为:单继承和多继 ...

  7. JAVA基础——面向对象三大特性:封装、继承、多态

    JAVA面向对象三大特性详解 一.封装 1.概念: 将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法来实现对隐藏信息的操作和访问. 2.好处: 只能通过规定的方法访问数据. ...

  8. Java基础-面向对象第一特性之封装(Encapsulation)

    Java基础-面向对象第一特性之封装(Encapsulation) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.理解什么是面向过程和面向对象 面向过程与面向对象都是我们编程中 ...

  9. 夯实Java基础系列1:Java面向对象三大特性(基础篇)

    本系列文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查看 [https://github.com/h2pl/Java-Tutorial](https: ...

随机推荐

  1. HTML DOM getElementById() 方法

    定义和用法 getElementById() 方法可返回对拥有指定 ID 的第一个对象的引用. 语法 document.getElementById(id) 说明 HTML DOM 定义了多种查找元素 ...

  2. Silverlight环境配置

    今天对Silverlight安装环境进行了配置,本系统已经安装VS2010 和 Silverlight 5. 要开发Silverlight必须安装Developer Runtime 和 SDK , 且 ...

  3. pom.xml详情

    这里借鉴一下csdn中的一个系列的博客: 第一篇:POM文件详解 第二篇:maven中的依赖作用范围 第三篇:maven中的可选依赖和依赖排除 第四篇:maven中的dependencies和depe ...

  4. 2057. [ZLXOI2015]殉国

    ★☆   输入文件:BlackHawk.in   输出文件:BlackHawk.out   评测插件 时间限制:0.05 s   内存限制:256 MB [题目描述] 正义的萌军瞄准了位于南极洲的心灵 ...

  5. 3122 奶牛代理商 VIII

    3122 奶牛代理商 VIII 时间限制: 3 s 空间限制: 256000 KB 题目等级 : 大师 Master       题目描述 Description 小徐是USACO中国区的奶牛代理商, ...

  6. golang 并发锁的陷阱

    错误代码示例 package main import ( "sync" "strconv" "fmt" ) type Node struct ...

  7. Pycharm消除波浪线

    PyCharm使用了较为严格的PEP8检查规则,稍微有点错误就会出现波浪线提示.那么怎么消除这些波浪线呢?一个简单粗暴的方法就是:在编辑器的右下角有个小人形状的按钮,点开之后有个滚动条,将滚动条滑动到 ...

  8. Linux 配置 nginx + php

    为什么!!!我配过的服务器已经有5.6个了吧,为什么每一次配置都能要了我的老命??这次写清楚过程,以后再要被配服务器坑,我特么要砍人了. 提示:测试网站能否访问的时候,最好关掉浏览器的缓存功能或者勤清 ...

  9. 在iframe内页面完全加载完后,关闭父页面生成的div遮罩层

    遮罩层div为iframe父页面生成,需在iframe内页面完全加载完后,关闭遮罩层 alertMsgClose() :函数为关闭遮罩层函数 此段代码在iframe页面内: <script> ...

  10. day20-面向对象基础

    目录 面向对象基础 面向过程编程与面向对象编程 面向过程编程 面向对象编程 类与对象 类 对象 定义类和对象 定制对象独有特征 对象属性查找顺序 类与对象的绑定方法 类与数据类型 对象的高度整合 面向 ...