java学习笔记(3)

继承


this关键字有两个用途

  1. 引用隐式参数
  2. 调用该类其他的构造器。

super关键字也有两个用途

  1. 调用超类的方法
  2. 调用超类的构造器

动态绑定(调用对象方法执行过程)

  1. 编译器查看对象的声明类型和方法名。
  2. 接下来,编译器将查看调用方法是提供的参数类型。如果没有找到与参数类型匹配的方法,或者发现经过类型装换后有多个方法与之匹配,就会报告一个错误。
  3. 至此,编译器疑已获得需要调用的方法名字和参数类型。

    TIPS:方法的名字和参数列表称为方法的签名

  4. 如果是private方法,static方法、final方法或者构造器,那么编译器将可以准确地知道应该调用哪种方法,这种称为静态绑定。
  5. 当程序运行时,并且采用动态绑定调用方法时,虚拟机一定调用与x所引用对象的实际类型最合适的那个类的方法。
  6. 每次调用方法都要进行搜索时间开销相当大,所以虚拟机会预先为每个类创建了一个方法表。


阻止继承

将方法或类声明为final主要目的是:确保他们不会出现在子类中改变语义。


控制可见性的4个访问修饰符

  • 仅对本类可见———private
  • 对所有类可见———public
  • 对本包和所有子类可见——protected
  • 对本包可见——默认,不需要修饰符

反射

反射机制作用:

  • 在运行中分析类的能力
  • 在运行中查看对象,例如,编写一个tostring的方法供所有类使用
  • 实现通用的数组操作代码。
  • 利用Method对象

未完待续。。
参考链接:
Java基础与提高干货系列——Java反射机制
深入解析Java反射(1) - 基础


接口与内部类

标签(空格分隔): java学习笔记


接口

  • 接口绝不能含有实例域,也不能在接口中实现方法。
  • 提供实例域和方法实现的任务应该由实现接口的那个类来完成。

让类实现接口的步骤p216

  • 将类声明为实现给定的接口
  • 对接口中的所有方法进行定义

每个类可以实现多个接口


异常、断言、日志和调试

标签(空格分隔): java学习笔记


异常分类

java异常层次结构

java异常层次结构

所有的异常都是从Throwable继承而来


派生于Runtime Exception的异常通常包涵下面几种情况

  • 错误的类型转换
  • 数组访问越界
  • 访问空指针等
    太多了,看书。。。

泛型

泛型很像C++中的模板。

局限性p539

  • 不能用基本类型实例化类型参数
  • 运行时类型查询只适用于原始类型
  • 不能创建参数化类型的数组
  • Varargs警告p540
    • java不支持泛型类型的数组
  • 不能实例化类型变量
  • 泛型类的静态上下文中类型变量无效(原文:Type Variables Are Not Valid in Static Contexts of Generic Classes)
  • 不能抛出或捕获泛型类的实例
  • 注意擦除后的冲突

转载于:https://www.cnblogs.com/qlie/p/8195564.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值