Java继承

基本概念

  继承已经存在的类就是复用这些类的方法和域.在此基础之上可以添加一些新的方法和域,以满足新的需求.

  反射是指在程序运行期间发现更多的类及其属性的能力.

  类的继承是关键字extends表示.

  extends表示正在构造的类派生于一个存在的类.已经存在的类称为超类,派生的类是子类.

  关键词this 作用 引用隐士参数 调用该类的其他构造函数
关键词super 调用超类的方法 调用超类的构造函数
他们都在构造函数的第一行出现.

  一个对象变量可以指示多种实际类型的现象称为多态.在运行时能够自动的选择调用那个方法的现象是动态绑定.


继承层次

  继承并不仅限于一个层次,由一个公共超类继承出来的所有类的集合被称为继承层次,在继承层次中,从某个特定的类到祖先的路径被称为该类的继承链.


多态

  程序中出现超类对象的任何地方都可以用子类对象替换.这就是替换原则.

理解动态绑定

  (1)编译器将会一一列举出名称为f的方法和超类中访问属性为public且名称为f的方法获取所有的候选方法.
  (2)检查调用方法的参数,如果名称为f的方法中存在参数类型完全匹配的就选择这个方法,这个过程就是重载解析.如果子类中一个与超类签名相同的方法,那么子类中的方法就覆盖了超类中的方法.
  (3) private static final或者构造器可以准确知道调用的方法是静态绑定.与此对应的是,调用方法依赖于隐士参数的实际类型在运行时动态绑定
  (4)动态绑定的好处无需对现存的代码进行修改,就可以对程序进行扩展
  (5)在覆盖方法是子类方法不可以低于超类方法的可见性.

阻止继承 final类和方法

  不允许扩展的类被称为final类;类中的特定方法也可以申明为final,子类不可以覆盖final方法;同样的域也可以被声明为final 构造之后不可以修改.但是final中方法会自动变成final但是域不会这样.

强制类型转换

  将一个类强制转换成另外一个类型的过程教程强制类型转换,例如:

double x=3.4;
int a=(int) x;

  进行类型转换的唯一原因是:在暂时忽视对象的实际类型后,使用对象的全部功能。大家都知道在Java中每个对象变量都属于一个类型,描述了这个变量所引用的以及可以引用的对象类型。将一个值存入变量是,编译器会检查是否允许该操作。将子类的引用赋给一个超类的变量,这是可以的。但是将一个超类的引用赋给一个子类的变量,必须要进行类型转换,这样才可以通过运行时的检查。因此,应该养成一个良好的习惯:在进行类型转换之前,先看一下是否可以成功的转换,这个过程简单的使用instanceof操作符就可以实现。
  综上所述:只能在继承层次内进行类型转换。在将超类转换成子类之前,应该使用instanceof 进行检查。

抽象类

  使用abstract关键字可以实现抽象的概念,包含一个或者多个抽象方法的类必须被申明为抽象类,但是抽象类不一定包含抽象方法。抽象类中除了包含还可以包含具体数据和具体的方法。抽象类不可以被实例化。需要注意:定义一个抽象类的对象变量,只能引用非抽象子类的对象。

Object 所有类的超类

  Object类是Java中所有类的超类,在Java中每个类都是由Object扩展来的。Object类型的变量只能作为各种值的通用吃油脂。要想对其中的内容进行修改,还需要清除对象的原始类型,进行响应的类型转换。
  在Java中只有基本数据类型不是对象。例如,数值,字符,boolean等都不是对象。所有的数组类型不管是对像数组还是基本类型的数组都扩展了Object类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值