继承

  • 一个对象变量可以指示多种实际类型的现象被称为多态(polymorphism)。
  • 在运行时能够自动地选择调用哪个方法的现象称为动态绑定(dynamic binding)。
  • 如果是private方法、static方法、final方法或者构造器,编译器可以准确知道应该调用哪个方法,此种调用方式称为静态绑定(static binding)。
  • 子类不能覆盖父类中final修饰的方法(final类中所有方法自动地成为final方法,并且final类不能被继承)。
  • 在父类转子类的类型转换前,可以先借助 instanceof 操作符,查看是否能够转换成功。
if(staff instanceof Manager){
boss=(Manager) staff;
}
  • 在超类(父类)设计合理的情况下,很少会使用到类型转换和instanceof运算符。
  • 包含一个或多个抽象方法的类本身必须被声明为抽象的。
    • 除了抽象方法,抽象类还可以包含具体数据和具体方法。
    • 扩展抽象类有两种选择:一是部分实现抽象方法,此时子类仍需标记为抽象类;二是定义全部抽象方法。
    • 类即使不包含抽象方法,也可以将类声明为抽象类。
    • 抽象类不能被实例化。
  • 访问控制:
    • 仅对本类可见——private
    • 对本包可见——默认,不需要修饰符
    • 对本包和所有子类可见——protected
    • 对所有类可见——public
  • 如果没有明确地指出父类,则Object就被认为是这个类的超类,其常见几个方法:

「JavaSE 重新出发」05.01 继承的更多相关文章

  1. 「JavaSE 重新出发」05.01.02 hashCode 方法、toString 方法

    hashCode 方法 散列码(hash code)是由对象导出的一个整形值(可以是负数).其是没有规律的,如果x与y是两个不同的对象,则x.hashCode()与y.hashCode()基本上不会相 ...

  2. 「JavaSE 重新出发」05.01.01 equals 方法

    equals 方法示例 // 代码来自<Java核心技术 卷I>P167 // 父类 public class Employee{ ... public boolean equals(Ob ...

  3. 「JavaSE 重新出发」05.03.01 利用反射分析类

    在 java.lang.reflect 包中有三个类 Field, Method 和 Constructor 分别用于描述类的域.方法和构造器. Class 类中的 getFields, getMet ...

  4. 「JavaSE 重新出发」05.02 泛型数组列表、包装类

    泛型数组列表 ArrayList 是一个采用类型参数(type parameter)的泛型类(generic class). java ArrayList<Employee> staff ...

  5. 「JavaSE 重新出发」02.01 基本数据类型

    基本数据类型 1. 整型 注意:Java 没有任何无符号(unsigned)形式的 int.long.short 或 byte 类型. 不同进制的表示形式: 十六进制数值有一个前缀0x或0X(如0xC ...

  6. 「JavaSE 重新出发」05.03.03 使用反射编写泛型数组代码

    Employee[] a = new Employee[100]; // ... // array is full a = Arrays.copyOf(a, 2 * a.length); 如何编写这样 ...

  7. 「JavaSE 重新出发」05.03.02 在运行时使用反射分析对象

    在编写程序时,如果知道想要查看的域名和类型,查看指定的域是一个很容易的事,而利用反射机制可以查看在编译时还不清楚的对象域. java Employee tank = new Employee(&quo ...

  8. 「JavaSE 重新出发」05.03 反射

    能够分析类能力的程序称为反射(reflection). 反射库(reflection library)提供了一个非常丰富且精心设计的工具集,以便编写能够动态操纵 Java 代码的程序. 反射机制可以用 ...

  9. 「JavaSE 重新出发」01. Java介绍

    「白皮书」关键术语 简单性(C++--) 面向对象 分布式 健壮性 安全性 体系结构中立 可移植性 解释型 高性能 多线程 动态性 Java 发展历程 SUN公司--Stanford Universi ...

随机推荐

  1. C# dataGridView1 添加数据 和清空数据

    #region MyRegion DataGridViewTextBoxColumn col = new DataGridViewTextBoxColumn(); DataGridViewTextBo ...

  2. 修改XtraMessageBox的内容字体大小

    修改XtraMessageBox的内容字体大小 public static DialogResult Show(UserLookAndFeel lookAndFeel, IWin32Window ow ...

  3. java 常用API 时间

    package com.orcal.demc01; import java.text.ParseException; import java.text.SimpleDateFormat; import ...

  4. jq DataTable

    DataTables(http://datatables.club/index.html)应该是我到目前为止见过的,功能最强大的表格解决方案(当然,不计算其它整套框架中的table控件在内). 先把它 ...

  5. 四种ASP网页跳转代码

    时间:2012-06-12 21:12来源:未知 输入:铜都风尘 点击: 32987 次 如果你要在服务器端跳转,可以这样: Response.Redirect(http://blog.163.com ...

  6. Ajax技术实战操练课堂学习笔记

    ajax是什么 ? ajax(asynchronouse javascript and xml) 异步的javascript 和 xml 是7种技术的综合,它包含了七个技术( javascript x ...

  7. HDU2147 - kiki's game 【巴什博弈】

    Recently kiki has nothing to do. While she is bored, an idea appears in his mind, she just playes th ...

  8. ftp服务器在linux中安装

    1.安装 执行 yum -y install vsftpd 2.检验是否安装vsftpd : rmp -qa | grep vsftpd      默认配置文件/ect/vsftpd/vsftpd.c ...

  9. vue 动态获取div宽高有时候为0的情况

    项目背景: 需要使用echarts进行图表展示.由于div宽高是不固定的,因此需要先获取父级的宽高再把值赋予到图表的div中. 需要使用 this.$nextTick(() => {    }) ...

  10. 分布式深度学习之DC-ASGD

    本篇笔记是听刘铁岩老师做Distributed Deep Learning:New Driving Force of Artificial Intelligence报告整理而成 深度学习梯度下降公式如 ...