面向对象:继承

面向对象的特点:

  1. 继承:用来表达概念上具体化严肃的具体概念;子类可以继承父类的属性和方法。
  2. 子类的构造器中,首先调用父类的默认构造器(无参构造器)。
  3. 如果父类没有无参构造器,则在子类中构造器中指定父类的有参构造器。
  4. super和this在构造器中只能出现在第一行,并且只能有存在一个
  5. 编程建议:建议父类中保留无参的默认构造器。这样就能保证任何子类的方法都可以调用父类的默认构造器。

对象实例化过程:

  1. 首先检查类是否被加载,不是加载这个类,而是先加载所有父类,只加载一次,加载以后是一个对象(读取.class 文件到内存)
  2. 分配父类类型的空间,按照属性分配空间,属性自动初始化
  3. 执行父类属性的初始值赋值
  4. 执行父类构造器代码
  5. 父类构造器结束,返回子类构造器,按照属性分配子类空间,子类属性自动初始化
  6. 执行子类属性的初始值赋值
  7. 执行子类的构造器代码

所有类默认集成于Object(java.lang.Object)==>所有类都是东西

 

向上造型,父类的引用指向子类,子类型转换成为父类型。

向下转型,子类型指向父类型,父类型转换成子类型,需要进行强制转换。

 

继承中的语法现象:

  1. 父类型的变量可以引用子类型的实例,父类型的实现就是多态
  2. 子类可以父类的方法,并且可以修改父类的内容/*方法的重写,子类覆盖父类的相同方法签名的方法,方法的重写是由方法的动态绑定实现的,就是java虚拟机运行时候,确定执行哪个对象的哪个方法,java最终执行子类的方法*/

继承 关键字:extends

继承的好处:

A》提高了代码的复用性

B》让类与类之间产生了关系,这是多态的前提

继承的特点

A》java只承认单继承,不存在多继承

B》多层继承关系

什么时候定义继承?

A》is — a

 

以后我们在定义类的时候:

  1. 如果他们之间有A is a B,或者B is a A,则他们之间存在继承关系。
  2. 不要为了获取部分功能而使用继承关系

this和super

this代表当前的对象

super代表父类的对象。

 

this的使用

成员变量(实例变量,属性,全局变量(含静态变量))

this.x==》代表当前类的属性

this.f()==》代表成员方法

this()==》代表构造器

 

super的使用

super.x==》代表父类的属性

super.f()==》代表父类成员方法

super()==》代表父类构造器

 

 

多态:在具体情形下发生变化的现象

 

引用类型:

向上转型:是小类型转大类型,自动转换

向下转型:是大类型转小类型,强制转换

 

instanceof 用来检测引用的对象类型,避免出现类型转换异常。

 

多态的好处:

  1. 可扩展性
  2. 可维护性
posted @ 2017-05-15 16:00  冥地魔王  阅读(106)  评论(0)    收藏  举报